通过跳板机连接内网服务器

背景:寒假宅在家想做点东西,需要用到学校里的GPU服务器,然而服务器的IP地址是内网IP,在家无法直接访问。正好学校里的另一台服务器有公网IP,所以打算将此服务器作为跳板机,从而访问内网服务器~

设备信息如下:

  • 本地机系统:win10
  • 跳板机系统:centos7

配置免密登录Linux跳板机

1.在本地机的cmd中输入:

1
ssh-keygen

生成rsa密钥对。如果一路回车的话,密钥会存放在C:\Users\<用户名>\.ssh目录下,如图所示,红框框选中的id_rsa.pub就是生成的公钥,我们后面需要用到,它上面没有后缀的文件是私钥:

2.将公钥发送至跳板机,命令格式为:
1
scp ./id_rsa.pub <跳板机用户名>@<跳板机IP>:~/.ssh/windows_rsa.pub

3.登录跳板机,然后cd到~/.ssh目录下,新建文件:authorized_keys(之前创建过就不需要了),然后将刚才传上来的公钥导入这个文件里,命令如下:

1
2
3
cd ~/.ssh
touch authorized_keys
cat windows_rsa.pub >> authorized_keys

4.之后用chmod命令将authorized_keys的权限改为600,.ssh文件夹的权限改为700

5.最后本地机尝试登录跳板机,成功!

设置SSH隧道

1.在本地cmd中输入:

1
ssh -N -f -L 6000:<内网服务器ip>:22 -p <跳板机端口22> username@<跳板机ip> -o TCPKeepAlive=yes

2.隧道打开之后,新打开一个cmd,首次连接输入ssh -v -p 6000 <内网服务器用户名>@localhost,然后输入yes(如果不是首次连接,可以去掉-v参数),就可以进入服务器玩耍了!

参考:

  1. windows配置免密登录linux
  2. ssh隧道解决pycharm跨过跳板机连接服务器问题