0%

vscode 通过跳板机连接服务器

前言

听说 vscode 安装 Remote-SSh 就能够远程连接服务器,于是试了下,果然如此,这下就很方便,比较 vscode 比 vim 还是方便地多。有个问题是对于有 IP 的服务器可以直接在 C:\Users\taseikyo\.ssh\config 配置,如下:

1
2
3
4
Host node
HostName a.b.c.d
User taseikyo
IdentityFile C:\Users\taseikyo\.ssh\id_rsa

但是对于只能内部跳转的服务器无法直连,这个时候就需要一个有 IP 的节点作为跳板跳转,此时在 vscode 中怎么配置呢?于是有了这篇文章。

解决

上面两个博客的方法都没解决问题

在 GitHub 上面也有好多讨论

最终解决了问题。

目的是 windows 通过中间跳板最终链接目标服务器
windows - jumpnode - target

按照第一个博客的步骤:

  1. 安装最新的 openssh
  2. 生成密钥(ssh-keygen -t rsa -b 1024 -C taseikyo@mypc),然后将公钥复制到 target 服务器的 authorized_keys 中
  3. 配置 vscdoe
1
2
3
4
5
6
7
8
9
10
11
Host jumpnode
HostName 111.111.111.111
User taseikyo
# 配置下面这个可以免密登陆
IdentityFile C:\Users\taseikyo\.ssh\id_rsa

Host target
HostName 10.20.20.20
User taseikyo
# 注意 ssh 要是完整路径不然会报错连不上
ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe -W %h:%p jumpnode

后记

另外有个算是上面已经说的问题,如果节点 A 想免密码转到节点 B,需要将 A 的公钥复制到 B 的 authorized_keys 中,具体步骤是:

  1. 在 A 节点生成公钥,ssh-keygen -t rsa -b 1024 -C "taseikyo@gmail.com",若是 Windows 路径在 C:\Users\taseikyo\.ssh\id_rsa.pub,若是 Linux 则在 ~/.ssh/id_rsa.pub
  2. 将 A 节点的公钥复制到 B 节点的 authorized_keys 文件中(vim ~/.ssh/authorized_keys
  3. 然后从 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 等一些东西就连上了。

Welcome to my other publishing channels