Windows -> Linux

由于各种各样的原因,我们总是有理由需要一个外部的环境来进行开发。对于主力环境是Windows的用户来说,能有一个Linux的环境来说是非常方便的,可以很大程度上提高工作的效率。比如说我们可以在Linux的机器上部署不同版本的Python或者Golang的环境,同时,有些编译的操作必须在Linux的环境下才可以操作等等。 这篇文章我们就一步一步的来看具体是怎么配置的吧。

vscode上安装插件

在vscode上安装插件是一件很简单的事情。

  1. 第一步我们打开vscode左边的Extensions标签,然后再里面输入remote,下面会列出很多的选项,我们只需要选择需要的来安装就行。
  2. 选择Remote - SSH 和 Remote - Tunnels分别安装

vscode安装插件

配置Remote ssh

Pre确认

在配置之前我们先要确认下几个事情。

  • 登录到我们要连接的远程服务器上,查看允许端口转发的配置是否打开,使用以下命令来确认。如果发现是被注释的状态(前面有#号),则需要我们去掉注释,然后重启ssh的服务。

      # 查看允许端口转发的配置是否开启
      cat /etc/ssh/sshd_config | grep AllowTcpForwarding yes
    
    
      # 重启ssh的服务
      # 重启ssh的服务对于不同版本的Linux可能不尽相同,下述命令取其一即可。
      systemctl restart sshd
      systemctl restart ssh
      systemctl restart openssh
    
  • 确认下当前连接的远程主机的ip信息是否已经被加入到known_hosts里面:

    • 在本地电脑(Windows)打开”C:\Users\win10.ssh\known_hosts”这个文件,我的用户名是win10,如果你的用户名是其它的,进行相应的修改。
    • 这个文件里面存储了你当前电脑连接过的已知主机的公钥信息,此文件的主要作用是增强 SSH 连接的安全性,防止中间人攻击(Man-in-the-Middle Attack),文件的内容类似example.com,192.168.1.1 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEArf…
    • 查找看里面是否有你连接的ip的信息,如果有的话把这一行删除了,然后保存下文件并退出。
  • 配置ssh免密(可选操作)

    如果你不想每次连接的时候都手动输入一遍密码,可以配置ssh的免密登录。

    • 本地已经生成了ssh的密钥,如果没有的话使用ssh-keygen命令来生成一个就可以。
    • 方案1: 配置免密登录最简单的是使用ssh-copy-id这个命令,Windows下默认没有这个命令,如果你安装了git-bash的话可以打开git-bash,然后执行ssh-copy-id user@remote_ip,然后输入密码即可。 免密登录-方案1
    • 方案2:拷贝当前电脑(Windows)的ssh的公钥文件”C:\Users\win10.ssh\id_rsa.pub”的内容,注意是内容,不是文件。放到你远程Linux机器的~/.ssh/authorized_keys文件里面。 免密登录-方案2

    上述配置完成之后,再测试ssh登录远程主机,如果直接登录上去,而没有提示输入密码,则说明免密配置成功。

连接配置

上述前期准备工作完成之后,我们就可以来进行连接配置了,最简单的方式在配置文件里面填写相关信息来进行配置。

  • Vscode的ssh连接信息的配置文件存储在”C:\Users\win10.ssh\config”这个文件里面,win10是我的用户名,根据自己的进行调整。
  • 按下键盘上的ctrl + shift +p 打开面板,输入remote ssh,找到下拉列表的Remote-SSH Connect to host,然后按下Enter进入选项。
  • 如果你之前配置过的话这里会列出主机的ip地址,同样的可以创建新的连接,也可以对现有的连接进行编辑。 点击Configure SSH Hosts…这个选项之后同样可以看到你本地的config配置文件。

了解了配置文件的出处之后我们就可以来编辑配置文件了,你可以用任何的编辑器来打开它。 下面这个是我的配置文件的示例:

Host 192.168.100.21
    HostName 192.168.100.21
    User ubuntu

Host 192.168.1.227
    HostName 192.168.1.227
    User root
    Port 22
    IdentityFile "C:\Users\win10\.ssh\id_rsa"
    ForwardAgent yes

现在我们来详细了解每个参数的含义:

  • HOST 定义一个主机别名,用于在 SSH 配置中引用该主机。可以是 IP 地址、域名或自定义名称。
  • HostName 指定实际的主机名或 IP 地址。它可以与 Host 相同,但可以是不同的名称。例如,如果你希望使用简短的别名而不是 IP 地址,可以在 Host 中使用别名,在 HostName 中使用实际的地址。
  • User 连接SSH的用户
  • Port 连接SSH的端口,不填写的话默认是22
  • IdentityFile 指定用于身份验证的私钥文件的路径。如果你使用 SSH 密钥进行身份验证,而不是密码,则需要指定私钥文件的位置。
  • ForwardAgent 如果设置为 yes,则 SSH 代理的身份验证信息将被转发到远程主机,这样你可以在远程主机上使用本地的 SSH 密钥进行进一步的 SSH 连接。这在需要通过中间主机连接到其他主机时非常有用。

其它的参数

  • ProxyCommand 指定用于连接到目标主机的命令,通常用于通过代理或跳板主机连接。
  • StrictHostKeyChecking 指定 SSH 客户端在连接到新主机时的行为。可以设置为 yes、no 或 ask。
    • yes: 仅接受已知主机列表中的主机。
    • no: 允许连接到未知主机。
    • ask: 询问用户是否接受新的主机密钥。
  • UserKnownHostsFile 指定存储已知主机密钥的文件。默认是 ~/.ssh/known_hosts。
  • LogLevel 设置日志级别,控制 SSH 客户端的输出信息量。可以设置为 QUIET、FATAL、ERROR、INFO、VERBOSE、DEBUG 等。
  • Compression 启用或禁用 SSH 连接的压缩。可以设置为 yes 或 no。
    • Compression yes
  • ConnectTimeout 设置连接超时时间(以秒为单位)。
    • ConnectTimeout 10
  • ForwardX11 启用或禁用 X11 转发(用于图形界面应用程序)。
    • ForwardX11 yes

配置文件修改完成后不会立即生效,可以打开一个新的工作区来刷新一下就能识别到你添加的ssh的配置了。 连接 此时我们点击这个连接的箭头,会打开一个新的窗口来连接,选择对应主机对应的平台 平台选择 成功后,点击左边的打开目录,在中间选择远程主机的目录,到这里就大功告成了。 大功告成

此时点击左上角Terminal(终端)的按钮,打开的终端就是你备份服务器的终端了。 打开终端

SFTP配置

在日常的开发中,我们不仅仅是要用到远程主机的环境,还有把本地的文件同步到远程主机的需求,此时就需要来配置SFTP了。配置的过程和Remote SSH基本一致,也是需要安装插件。

SFTP插件的安装

在Extensions里面输入SFTP,找到Natizyskunk这个作者的,点击安装。 安装SFTP插件

安装完成后,使用快捷键ctrl + shift +p 打开面板,输入SFTP config,打开sftp的配置文件,如下所示:

{
    "name": "My Server",
    "host": "192.168.1.100",
    "protocol": "sftp",
    "port": 22,
    "username": "your_username",
    "password": "your_password",  // 不推荐
    "privateKeyPath": "C:/Users/your_username/.ssh/id_rsa",
    "remotePath": "/path/to/remote/directory",
    "uploadOnSave": true,
    "useTempFile": true,
    "openSsh": false,
    "ignore": [
        ".git",
        "node_modules",
        "*.log"
    ],
    "timeout": 30000,
    "watch": true,
    "syncMode": "full",
    "debug": true
}

下面我们来详细看下每个参数具体的含义:

  • name 这是该 SFTP 连接的名称,可以是任何你喜欢的描述性名称,便于识别。
  • host 远程服务器的主机名或 IP 地址。
  • protocol 指定使用的协议类型,通常是 “sftp”。可以是 sftp 或 ftp。
  • port SSH 连接的端口,默认为 22。如果远程服务器使用不同的 SSH 端口,可以在此处指定。
  • username 用于连接到远程服务器的用户名
  • remotePath 连接后在远程主机上打开的根目录。注意这个要根据自己的实际情况进行修改。
  • uploadOnSave 指定在保存文件时是否自动上传到远程服务器。设置为 false 表示不自动上传。一般都设置为true
  • useTempFile 如果设置为 true,在上传文件时将使用临时文件进行上传,而不是直接将文件写入目标位置。这在某些情况下可以避免文件损坏。
  • openSsh 指定是否使用系统的 OpenSSH 客户端进行连接。如果设置为 true,将使用系统的 SSH 客户端。
  • password 连接时使用的密码(不推荐使用明文密码,建议使用密钥认证)。
  • privateKeyPath 用于身份验证的私钥文件的路径
    • “privateKeyPath”: “C:/Users/your_username/.ssh/id_rsa”
  • ignore 指定在上传时要忽略的文件或目录,可以使用 glob 模式。
  • timeout 设置连接超时时间
    • “timeout”: 30000 // 30 秒
  • watch 启用文件监视,自动上传文件更改。
    • “watch”: true
  • syncMode 定义文件同步模式,可以是 full(完整同步)或 update(仅更新)。
  • remoteCommand 在连接后自动执行的远程命令。
    • “remoteCommand”: “cd /path/to/directory”
  • debug 启用调试模式,输出详细的调试信息。
    • “debug”: true

完成后,我们就可以在相应的目录右键单击,然后选择将文件从本地同步到远程主机上了 大功告成

版权声明: 如无特别声明,本文版权归 sshipanoo 所有,转载请注明本文链接。

(采用 CC BY-NC-SA 4.0 许可协议进行授权)

本文标题:《 vscode配置远程ssh开发环境 》

本文链接:http://0.0.0.0:3015/tech/vscode%E9%85%8D%E7%BD%AE%E8%BF%9C%E7%A8%8Bssh.html

本文最后一次更新为 天前,文章中的某些内容可能已过时!