VSCode Remote-SSH配置免密登录踩坑
- 1. 参考
- 2. 基本流程
- 2.1 机器A(Windows客户端)
- 2.2 机器B(Linux服务器)
- 2.3 机器A(Windows客户端)的VSCode设置
- 3. 踩坑总结
相关教程很多,但要么冗余,要么不清晰,博主在这篇文章中将首先列出相关参考资料,其次给出较为清晰的流程(OS),最后列出坑点,避免大家二次踩坑。
1. 参考
- vscode设置remote-ssh并免密登录
- How to save ssh password to vscode?
- SSH 三步解决免密登录
2. 基本流程
假设从机器A(Windows客户端)免密登录机器B(Linux服务器)
2.1 机器A(Windows客户端)
-
生成Public Key与Private Key
打开命令行,输入ssh-keygen
,一路回车之后有类似下图的结果(摘自博客 vscode设置remote-ssh并免密登录):
图中红框路径代表Private Key所在路径,同样可以看到/c/Users/15333/.ssh/id_rsa.pub
路径,这是Public Key路径。注意:为了保证免密登录,这里Enter passphrase (empty for no passphrase)处一定要直接回车,即不输入密码。 -
上传Public Key到机器B(Linux服务器)
上传的方式有多种,最简单的是直接用记事本打开/c/Users/15333/.ssh/id_rsa.pub
,然后拷贝内容直接粘贴到服务器上。粘贴到哪里呢?在用户家目录的
.ssh/authorized_keys
文件下。为了简便起见,可以在Linux服务器终端输入下述命令来创建authorized_keys
文件:mkdir -p ~/.ssh touch ~/.ssh/authorized_keys
接下来用VScode打开
~/.ssh/authorized_keys
粘贴内容保存即可
2.2 机器B(Linux服务器)
接下来在机器B上要继续修改文件权限并重启ssh
服务:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
service sshd restart
2.3 机器A(Windows客户端)的VSCode设置
ctrl + shift + P
打开SSH的config文件
- 找到机器B对应的Host,例如:
Host B HostName 127.0.0.1 User deadpool
- 为其添加Private Key文件路径(IdentityFile,自行修改):
Host B HostName 127.0.0.1 User deadpool IdentityFile "C:\Users\15333\.ssh\id_rsa"
- 此时再使用VSCode Remote-SSH登录即可免密
3. 踩坑总结
- 密钥空密码(机器A):在生成Public/Private Key阶段,为了保证免密登录,Enter passphrase (empty for no passphrase)处一定要直接回车,即不输入密码 ,见上述2.1节
- 文件权限(机器B):保证
~/.ssh
权限是700,~/.ssh/authorized_keys
权限是600chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
- 修改VSCode Config:记得添加
IdentityFile
路径,见2.3节
OK,现在就可以起飞了🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫