前言
听说 vscode 安装 Remote-SSh 就能够远程连接服务器,于是试了下,果然如此,这下就很方便,比较 vscode 比 vim 还是方便地多。有个问题是对于有 IP 的服务器可以直接在 C:\Users\taseikyo\.ssh\config
配置,如下:
1 | Host node |
但是对于只能内部跳转的服务器无法直连,这个时候就需要一个有 IP 的节点作为跳板跳转,此时在 vscode 中怎么配置呢?于是有了这篇文章。
解决
- https://blog.csdn.net/dcz1994/article/details/103120254
- https://blog.csdn.net/maokelong95/article/details/91801944
上面两个博客的方法都没解决问题
- https://github.com/microsoft/vscode-remote-release/issues/18
- https://serverfault.com/questions/956613/windows-10-ssh-proxycommand-posix-spawn-no-such-file-or-directory
在 GitHub 上面也有好多讨论
最终解决了问题。
目的是 windows 通过中间跳板最终链接目标服务器
windows - jumpnode - target
按照第一个博客的步骤:
- 安装最新的 openssh
- 生成密钥(
ssh-keygen -t rsa -b 1024 -C taseikyo@mypc
),然后将公钥复制到 target 服务器的 authorized_keys 中 - 配置 vscdoe
1 | Host jumpnode |
后记
另外有个算是上面已经说的问题,如果节点 A 想免密码转到节点 B,需要将 A 的公钥复制到 B 的 authorized_keys 中,具体步骤是:
- 在 A 节点生成公钥,
ssh-keygen -t rsa -b 1024 -C "taseikyo@gmail.com"
,若是 Windows 路径在C:\Users\taseikyo\.ssh\id_rsa.pub
,若是 Linux 则在~/.ssh/id_rsa.pub
- 将 A 节点的公钥复制到 B 节点的 authorized_keys 文件中(
vim ~/.ssh/authorized_keys
) - 然后从 A 节点可以免密 ssh 到节点 B 中
再后记
210324
由于实验室服务器被恶意攻击(被当作矿机了),所以节点被限制 ip 访问,原先用 VS Code 直连现在不行了,即使开放了访问(在 /etc/hosts.allow
中加入了 sshd:123.123.123.123
),将公钥添加到对应服务器的 authorized_keys
,VS Code 还是长时间连接不上,最后直接在服务器上将 ~/.vscode-server
文件夹删掉了,然后让 VS Code 自己重新安装 remote-ssh 等一些东西就连上了。