学院的服务器在学院的内网,出了学院就不能访问,在宿舍、家里学习很不方便没有服务器的话。之前一直用TeamViewer,但是用着不舒服。最近新找到一个办法,就是利用外网服务器以及反向SSH搭一条通道,使得可以利用外网的服务器登录内网的服务器。简单理解,既然外网无法找到内网的服务器的IP,那就内网服务器自己寻找外网的服务器,主动搭建SSH通道,这样外网就可以通过这条通道连接到内网了。
两台服务器配置
IP | 登录用户名 | |
内网服务器 | 192.168.1.107 | tao |
外网服务器 | 1.1.1.1.1 | root |
外网服务器我用的是阿里云的学生服务器。
在内网服务器上执行操作
ssh -NfR 1234:localhost:22 root@1.1.1.1 -p 22
其中,这条命令的意思是在后台执行(-f),不实际连接而是做port forwarding(-N),做反向ssh(-R),将远程服务器的1234端口映射成连接本机与该服务器的反向ssh的端口。root为外网服务器的登录名,1.1.1.1为外网IP(这里我瞎写的IP)执行完这条命令后在外网服务器就可以进行登录了。
ssh tao@localhost -p1234
tao是指你执行 ssh -NfR 1234:localhost:22 root@ip -p 22时所用的用户名
ssh连接中断问题
autossh -M 2222 -NfR 1234:localhost:22 root@1.1.1.1 -p 22
ubuntu安装autossh命令
sudo apt-get install autossh
---------------------------------------------------------分割线--------------------------------------------------------------
使用第二天,报错:write failed, broken pipe
解决办法:编辑 /etc/ssh/ssh_config
增加一行:ServerAliveInterval 120 #每隔20s向服务器发送一次 alive 请求
参考: