先介绍一下我这里的情况: 公司的电脑是在内部网里面,不可能有公网地址;家里的电脑是adsl拨号,有动态的公网IP,动态绑定到域名 xxx.xxx.org
如果现在想从家里ssh到公司的电脑,直接连接肯定是不行的,不过可以用以下方法:
1. 在公司电脑上执行: ssh -f -N -R 12121:localhost:22 xxx@xxx.xxx.org
2. 然后在家里的电脑上执行: ssh xxxx@localhost -p 12121 就可以成功连上公司的电脑了.
上面命令里面的 12121 是任一个本地端口(上面例子里面是家里电脑的端口),可以在合理的范围内任意指定.我的理解是这样的: 前一个命令相当于把公司机器的22端口(localhost:22) 映射到 家里机器的12121端口. 然后在家里电脑上直接ssh 本机的 12121 端口,数据就会被转发到公司机器了.就这么简单.