先贴总结:
- 本机安装ssh,check ssh是否安装成功: ssh 或者 ssh-V
2. vscode安装remote development 插件
3. 配置密钥
- (1)在本地机器生成密钥对(公钥+私钥):ssh-keygen
- (2)私钥放本机,公钥放远程(~/.ssh路径下)
- (3)在远程机器用公钥生成authorized_keys:
- 进入home目录下的.ssh文件夹:cd ~/.ssh
- cat id_rsa.pub >> authorized_keys
- (4)vscode config文件加入本机私钥路径到`IdentityFile`参数
细节如下:
- 本地机器安装ssh(windows系统)
- SSH全称Secure Sheel,是一个远程连接的协议,需要在本机上安装ssh才能够远程连接到server。
- check ssh是否安装成功:
(1)在terminal中输入ssh ,出现如下信息表明安装成功

(2)或者输入ssh -V,出现已安装的ssh版本,代表安装成功

2. vscode安装remote development 插件
(1)点击: Extensions (vscode界面左侧)

(2)在搜索框中搜索,点击安装

(3)Enable 该插件

3. 配置密钥
(1)用【ssh-keygen】命令来生成密钥对:
- id_rsa.pub是公钥,id_rsa是私钥。

- 如果多平台都要使用ssh,则需要修改密钥文件名,避免冲突:

ssh-genkey的过程中不要输入密码,不然登录的时候还要Enter passphrase for key
(2)公钥放server(远程主机)上,私钥放本机上。
- 进入刚才密钥对保存的folder(C:\Users\10747/.ssh),把.pub后缀的公钥传输到server上(可以用scp命令)
- 公钥放在server的~/.ssh文件夹中
(3)进入server 的~/.ssh 文件夹,使用【cat】命令,用公钥文件来生成 authorized_keys。
- 生成完之后输入【ls】可看到当前路径多了一个authorized_keys文件。

(4)修改vscode的config file,加入 IdentityFile 和对应的本机私钥路径
① 打开.ssh/config文件


② 修改.ssh/config文件:加入IdentityFile的路径(也就是私钥在本机的所在位置)

(不过ssh连接会默认到用户的 .ssh 文件夹里面读取秘钥,如果生成秘钥的时候是按照默认习惯到用户的 .ssh 目录里面生成,就不需要额外配置。)
这时候再用vscode登录server就不用输入密码了!
如果按照教程操作后没有效果,
可尝试执行如下命令
chmod 700 ./.ssh
chmod 600 ./.ssh/authorized_keys
原因是SSH不希望用户目录和~/.ssh目录对组有写权限
如果没有解决可尝试使用执行 sudo cat /var/log/secure 查看系统的安全日志,根据具体日志内容解决
同一对密钥和公钥可以用于同一台客户端免密登录多台不同的服务器,不过理论上讲这种做法不符合密码学意义上的安全性,正确的做法是每台设备自生一套秘钥然后将公钥添加到被登录的机器上面。
来自https://zhuanlan.zhihu.com/p/222452460 感谢@托马斯羊的简明教程和评论区的补充