我们可能会有在远程主机环境下开发的需求,vscode的Remote-SSH插件提供了强大的支持
一、安装vscode插件
搜索插件ssh,安装Remote - SSH
。安装好之后,会自动安装一个Remote Development
插件,用来打开远程ssh主机的文件夹
二、安装ssh客户端
vscode的远程ssh插件会调用ssh客户端去连接远程服务器,所以我们需要在本机上安装open-ssh(mac或linux默认都有ssh客户端,可跳过该步骤)
windows的ssh客户端可以到github上下载:https://github.com/PowerShell/Win32-OpenSSH/releases
下载好了之后,解压即可,接着需要配置环境变量,比如你的open-ssh是解压到D:\necessary\OpenSSH-Win64
,可以按以下步骤配置(win10)
我的电脑 --> 属性 --> 高级系统设置 --> 环境变量 --> 选中Path,点击编辑 --> 新增D:\necessary\OpenSSH-Win64;
(注意环境变量间用分号隔开)
配置好环境变量后,打开cmd
,输入ssh
,如果出现提示信息,则表示可用,否则检查环境变量是否配置正确
注:windows安装完open-ssh客户端后,需要重启一下vscode
三、连接远程主机
打开vscode,使用Ctrl + Shift + P
打开命令框,输入remote
,点击Connect to Host
选择Add New Host
输入需要远程连接的主机ip或域名
接下来要选择一个配置文件用于存储远程主机的连接信息,用户目录下的.ssh\config
会自动创建,其他目录需要自己手动创建再选择
这样配置文件就有了刚才加的那台需要远程的主机了
我们可以按这样的格式自己添加其他主机:
# Host:远程主机起一个本地名字
# HostName:填写远程服务器的ip或域名
# User:需要用什么用户身份远程登录
Host 10.10.10.10
HostName 10.10.10.10
User root
Host test
HostName 10.200.112.103
User root
保存好文件之后,再次选择Connect to Host
就可以看到有两台远程主机可以连接:
点击test,连接10.200.112.103这台主机,会跳出一个新的vscode窗口,提示输入密码
输入正确的密码后敲Enter,vscode界面左下角能够看到现在已经成功连上test这台主机
现在就可以在vscode上像打开本地文件夹一样打开远程文件夹:
使用Ctrl +
`呼出的shell也是远程服务器的shell
四、配置私钥登录
使用密码登录每次连接远程主机以及打开文件夹的时候都需要输入密码,很不方便,可以使用私钥代替密码登录
- 打开cmd,输入
ssh-keygen
生成rsa密钥对
C:\Users\yourhost>ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\yourhost/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in C:\Users\yourhost/.ssh/id_rsa.
Your public key has been saved in C:\Users\yourhost/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:AcjUQ57H27hitTVVlqfLJiFnSt0+mcx/0ftipwfPjMk yourhost@xxxxxx
The key's randomart image is:
+---[RSA 3072]----+
| o.+o o. |
| o.o+ o. .|
| o.+ ... o |
| . =o.= o |
| S.+= * +.|
| . +... %..|
| o o + Xo|
| . . E.O|
| ..=+|
+----[SHA256]-----+
- 将
id_rsa.pub
文件拷贝到远程主机
命令格式: scp <本地文件位置> user@ip:<远程文件位置>
这里是把 C:\Users\yourname.ssh\id_rsa.pub 文件通过ssh传到远程主机的\tmp目录下
D:\>scp C:\Users\yourname\.ssh\id_rsa.pub root@10.200.112.103:\tmp
root@10.200.112.103's password:
id_rsa.pub 100% 573 66.5KB/s 00:00
- 远程主机导入公钥
# 登录远程主机
D:\>ssh root@10.200.112.103
# 登录成功后,将公钥导入到authorized_keys文件
cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
注:可以使用ssh-copy-id工具更轻松地导入
- 验证通过私钥登录
ssh root@10.200.112.103 -i <id_rsa文件位置>
- 验证使用私钥可以成功登录后,更新vscode Remote-ssh的配置文件,添加
IdentityFile
参数,值为id_rsa
文件的路径
以后不用输入密码就可以打开test这台主机了
如果有多台主机都想要用私钥登录,只需要重复刚才的步骤,将刚才生成的id_rsa.pub
内容导入到远程主机的对应文件下,然后更新vscode Remote-ssh配置文件,新增IdentityFile
即可