最近做了一个小实验,尝试在校外网ssh连接一台学校内的服务器。在研究了ssh的反向代理后,明白了该如何去做。
说明一下,我有一台公网的服务器,将其配置为ssh中继服务器。假设它的IP为 delay_server_ip。在整个配置过程中,唯一重要的也就是这个中继服务器的ip。
首先,如果要使用ssh中继功能,首先要打开中继服务器上的ssh端口转发功能。
vim /etc/ssh/sshd_config
#在该文件中添加下面一行语句
GatewayPorts yes
!重启ssh服务
之后,在内网服务器的配置过程。
内网服务器:ssh -fCNR delay_server_ip:delay_server_port:localhost:local_ssh_port delay_server_user@deley_server_ip -p delay_server_ssh_port
释义:
delay_server_port 中继服务器转发端口,可以设定一个没有程序使用的端口
delay_server_ip 中继服务器公网ip
delay_server_ssh_port 中继服务器ssh端口,默认为22
local_ssh_port 本地ssh端口
在中继服务器上检查连接结果:
netstat -nap|grep delay_server_port
仍然是将delay_server_port 替换为端口号
如果有结果显示,那么反向连接配置成功。
之后可以在任意客户端上使用:
ssh -p delay_server_port local_user@delay_server_ip
这里的 local_user 为内网服务器的用户名。注意,这个用户名必须和你配置内网ssh时所用的用户名相同。