Windows -> Linux
由于各种各样的原因,我们总是有理由需要一个外部的环境来进行开发。对于主力环境是Windows的用户来说,能有一个Linux的环境来说是非常方便的,可以很大程度上提高工作的效率。比如说我们可以在Linux的机器上部署不同版本的Python或者Golang的环境,同时,有些编译的操作必须在Linux的环境下才可以操作等等。 这篇文章我们就一步一步的来看具体是怎么配置的吧。
vscode上安装插件
在vscode上安装插件是一件很简单的事情。
- 第一步我们打开vscode左边的Extensions标签,然后再里面输入remote,下面会列出很多的选项,我们只需要选择需要的来安装就行。
- 选择Remote - SSH 和 Remote - Tunnels分别安装
配置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,然后输入密码即可。
- 方案2:拷贝当前电脑(Windows)的ssh的公钥文件”C:\Users\win10.ssh\id_rsa.pub”的内容,注意是内容,不是文件。放到你远程Linux机器的~/.ssh/authorized_keys文件里面。
上述配置完成之后,再测试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这个作者的,点击安装。
安装完成后,使用快捷键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
本文最后一次更新为 天前,文章中的某些内容可能已过时!