远程SSH:提示和技巧

在上一篇有关远程SSH的文章中,我们介绍了如何使用Visual Studio Code中的Remote-SSH扩展配置Linux虚拟机并连接到虚拟机。 在这篇文章中,我们将讨论一些技巧和窍门,您可以利用它们充分利用远程配置。



使用远程SSH连接


Visual Studio Code Remote-SSH扩展使您可以使用SSH连接到远程计算机或虚拟机,而所有这些都可以从VS Code中进行。 如果尚未安装扩展名,则可以在“扩展名”(⇧⌘X)选项卡中搜索“ remote ssh”。



安装扩展程序后,您将在状态栏的左下角看到一个指示器。 该指示符告诉您VS Code(本地或远程)在什么上下文中工作。 单击指示器以显示远程扩展命令列表。



SSH配置文件


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

OpenSSH支持使用配置文件来存储所有各种SSH连接。 要使用SSH配置文件,请单击远程指示器以调用远程命令,选择“打开配置文件”,然后选择位于“用户/ {yourusername} /.ssh / config”中的文件。



这是示例SSH配置文件:

#      SSH: 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或防火墙后面将台式计算机或便携式计算机连接到远程计算机。 在这种情况下,您可以使用中间服务器或Jump-box 。 如果运行的安全系统配置为仅接受来自固定主机集的SSH连接,则此类型的配置很有用。

若要将Jump-box配置与Remote-SSH扩展一起使用,可以使用ProxyCommand配置参数。 此配置将打开带有跳转框的后台SSH连接,然后通过专用IP地址连接到目标。

您可以在SSH配置文件中设置ProxyCommand配置参数,如下所示:

 # Jump box   IP- Host jump-box HostName 52.179.157.97 User sana IdentityFile ~/.ssh/jumpbox #     IP- 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 

独立远程计算机


如果您受到防火墙的限制,或者您的公司阻止了虚拟机并且它们无法连接到Internet,则Remote-SSH扩展将无法连接到您的虚拟机,因为VS Code必须将名为VS Code Server的组件下载到远程计算机。

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

注意事项 目前这是一项实验性功能,但在将来的版本中将默认启用。

远程-SSH Nightly扩展


如果要在新的更新和实验性功能可用时立即对其进行测试,请安装远程扩展-SSH Nightly(首先删除稳定的Remote-SSH扩展)。 这是该扩展程序的通宵版本,在将新功能和设置添加到稳定版本之前,我们在其中进行了试验。

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


All Articles