有一台内网windows计算机A,没有修改内网路由的权限,现在需要在任何地方可以远程桌面连接到此计算机。
有一台公网Linux服务器B。
实现:
A计算机通过SSH与B建立SSH隧道,B监听某个端口转发到A的某个端口。
A中cygwin下执行命令:
1 | #!/bin/bash |
2 | ssh -o ServerAliveInterval=180 -i /cygdrive/c/id_rsa root@B的外网IP -p 22 -R 33389:localhost:3389 -fN |
这样连接B的33389端口就等于连接A的3389端口。
默认B的sshd只能监听127.0.0.1,需要修改配置项GatewayPorts yes才可监听外网。
此功能完美,屌爆!
常用参数
端口转发常与以下参数配合使用[3]:
-f
ssh将在后台运行
-N
不执行命令,仅转发端口
-C
压缩传送的数据
-i
使用指定的密钥登录
参考:
http://www.ruanyifeng.com/blog/2011/12/ssh_port_forwarding.html