现在有需求,有内网VPS一台,在内网内可以正常通过ssh的方式连接,现在需要让这台VPS可以被外网通过SSH的方式访问,现在有一台机器有公网IP,可以作为跳板
为了实现这一需求,可以通过VPN或者SSH-tunnel的形式,通过VPN或者SSH的方式转发流量
把充当跳板机器记作middleUserName@middleServeIp密码记作middleUserPassword
目标机器记作targetUserName@targetServeIp
首先执行这条命令,在localhost的localHostPort和跳板机器middleServeIp之间建立一个SSH的tunnel,-f -N两个参数会让SSH tunnel处于一直连接的状态

1
ssh -f middleUserName@middleServeIp -L localHostPort:targetServeIp:22 -N

这个时候如果是ssh是采用账号密码登录的方式,则执行

1
ssh -p localHostPort targetUserName@targetServeIp

如果是采用pem文件,则执行

1
ssh -p localHostPort targetUserName@targetServeIp -i path/to/pem/file

这里必须要注意如果是采用pem文件的方式,一定要保证pem文件的权限是400,因为SSH工作的时候一定要保证keyfile不能是别人可见的状态.可以参考permission error

补充

实际使用由于此方法太过复杂,根据上面的过程,在putty官网上有一个叫做plink的工具.后来有人根据plink做了myentunnel的工具,通过这个工具在启动时修改参数,可以省去输密码的时间
myentunnel
这里我的输入参数就是-L localHostPort:targetServeIp:22 -N
这个时候我们有了隧道,直接在shell里面执行
ssh -p localHostPort -i path/to/pem/file root@localhost
ssh