远程SSH:提示和技巧

在以前的Remote SSH博客文章中 ,我们介绍了如何使用Visual Studio Code中的Remote-SSH扩展来设置Linux虚拟机并连接到VM。 在此博客文章中,我们将介绍一些技巧和窍门,您可以使用它们来充分利用远程设置。



使用远程SSH连接


Visual Studio Code Remote-SSH扩展允许您使用SSH从VS Code内部连接到远程计算机或VM。 如果尚未安装扩展程序,则可以在“扩展程序”视图(⇧⌘X)中搜索“ remote ssh”。



安装扩展程序后,您会在状态栏的左下角看到一个指示器。 该指示器指示您在哪个上下文中运行VS Code(本地或远程)。 单击指示器以显示远程扩展命令列表。



SSH配置文件


在较早的Remote SSH博客文章中,我们仅连接到一台计算机,并在出现提示时输入“ user @ host”来实现连接。 如果您定期登录到多个远程服务器或本地虚拟机,则有一种更好的连接方式,而不必记住所有用户名,地址和其他配置选项。

OpenSSH支持使用配置文件存储所有不同的SSH连接。 要使用SSH配置文件,请单击远程指示器以显示远程命令,选择“打开配置文件”,然后选择路径“ Users / {yourusername} /.ssh / config”之后的文件。



这是SSH配置文件的示例:

# Read more about SSH config files: https://linux.die.net/man/5/ssh_config Host python-linux-vm HostName <vm address> User sana IdentityFile ~/.ssh/id_python_vm Host node-vm HostName <vm address> User sana Port 5522 IdentityFile ~/.ssh/id_node_vm 

您可以使用SSH配置文件格式指定更多配置选项 。 您将在此文件中获得完成和着色,并且可以按(⌃Space)进行IntelliSense,以了解有关配置选项的更多信息。

上面使用的选项是:
主持人易于记忆的主机别名。
主机名服务器的主机名(您可以使用服务器的IP地址)。
用户名您指定的用户通过SSH登录到计算机。
港口用于通过SSH连接的端口。 默认端口为22,但是如果您指定了唯一端口,则可以在此处进行配置。
身份文件您存储私钥的文件位置。
您可以添加所有主机的信息。 保存配置文件后,就可以在Remote Explorer中查看那些主机,以及在该主机上打开的所有文件夹。 您可以选择每个主机或文件夹旁边的图标,它将启动一个新的VS Code窗口(实例)并将您连接到该主机。 在下面的屏幕快照中,我已连接到远程计算机“ python-linux-vm”,并且“远程资源管理器”向我显示了我过去连接的文件夹以及该远程计算机上的所有转发端口。



代理命令


有时,您可能需要通过公司Intranet或防火墙后面从台式机或笔记本电脑连接到远程计算机。 在这种情况下,您可能正在使用中间服务器或跳转框 。 如果您正在配置为仅接受来自固定主机集的SSH连接的安全系统中工作,则这种设置很有用。

要将跳线设置与Remote-SSH扩展一起使用,可以使用ProxyCommand config选项。 此配置将打开与跳转框的后台SSH连接,然后通过专用IP地址连接到目标。

您可以在SSH配置文件中设置ProxyCommand config选项,如下所示:

 # Jump box with public IP address Host jump-box HostName 52.179.157.97 User sana IdentityFile ~/.ssh/jumpbox # Target machine with private IP address Host target-box HostName <IP address of target> User sana IdentityFile ~/.ssh/target ProxyCommand ssh -q -W %h:%p jump-box 

控制大师


如果要使用除基于密钥的身份验证之外的其他身份验证方法(例如,双因素,基于密码或带密码短语的SSH密钥)使用其他身份验证方法连接到远程SSH主机,则可能必须多次输入所需的信息。

无需打开多个SSH连接,您可以使用ControlMaster选项(仅在macOS / Linux客户端上)重用现有连接并减少必须输入密码短语的次数。

要使用此功能,请将以下内容添加到您的SSH配置文件中:

 Host * ControlMaster auto ControlPath ~/.ssh/sockets/%r@%h-%p ControlPersist 600 

离线远程机器


如果您受到防火墙的限制,或者您的公司锁定了VM,并且它们无法连接到Internet,则Remote-SSH扩展将无法连接到VM,因为VS Code需要下载一个称为VS Code Server的组件。到远程计算机。

但是,您现在可以通过“远程-SSH”扩展中的新用户设置来解决此问题。 如果启用设置remote.SSH.allowLocalServerDownload ,则扩展将首先在客户端上安装VS Code Server,然后通过SCP将其复制到服务器上。

注意:此功能目前是实验性功能,但在下一版本中将默认启用。

远程-SSH Nightly扩展


如果您有兴趣尽快测试新的更新和实验性功能,请安装Remote-SSH Nightly扩展 (首先卸载Remote-SSH稳定扩展)。 这是扩展程序的夜间版本,我们在将新功能和设置发布到稳定版本之前对其进行试验。

Source: https://habr.com/ru/post/zh-CN472184/


All Articles