SSH TCP 转发之反向连接

当你需要连接一台子网或防火墙内的且没有做端口映射的SSH服务器,又刚好你的客户端是有公网地址的,你是怎么怎么做的呢?现在我有一个比较不错的办法,就是SSH的TCP转发功能。

SSH 客户端可以将本地机器上的一个端口M与远程主机上的一个端口N映射起来,这样我们在本地机器访问这个端口M就和在远程主机访问端口N一样了。

对了,这里地要想实现我们的反向连接还有一个条件,就是你的本地机器也得安装 SSH 服务器程序。下面我们说一下具体的操作。

子网主机执行

$ ssh -f -N -R 8000:localhost:22 username@remote_ip

这是是将本地的 22 号端口与远程主机的 8000 号端口(SSH服务)映射起来。

公网主机执行

$ ssh username@localhost -p 8000

Over!

10 thoughts on “SSH TCP 转发之反向连接”

  1. 另外有一个比较有意思的东西,你可以在本地登陆 unix-center 的服务器。
    $ ssh -f -N -L 8000:localhost:22 username@ubuntu.unix-center.net
    $ ssh username@localhost -p 8000
    $ who
    你的登陆地址是 localhost 吧?

    如果我把 80 号端口给映射了,这样对于需要 localhost 才可以访问的页面,我不是可以访问了吗?因为本人是 localhost 访问的!

  2. 两个子网主机建立TCP转发,子网M中的主机A有端口为80的HTTP服务,子网N中的主机B需要访问子网M中的主机A上的HTTP服务。这种情况我们可以利用 unix-center 的服务器中转一下。
    主机A上执行
    $ ssh -f -N -R 8000:localhost:80 username@ubunu.unix-center.net
    主机B上执行
    $ ssh -f -N -L 8080:localhost:8000 username@ubuntu.unix-center.net

    现在主机B就可以在浏览器中访问 http://localhost:8080 了。

  3. 您好!

    我有个问题想请教,

    1.有一个远端设备(linux系统),我用GPRS将这个设备连接上网,地址是动态的,但是可以访问我公司的固定IP

    2.公司固定IP设置在防火墙上,内网有几台linux主机连在防火墙上。

    我如何能在公司的机器上远程登录到远端的设备,如telnet ftp.

    谢谢!

  4. 4楼的可以实现,固定IP的防火墙上映射ssh 22端口到内网linux机器。
    远端设备上:ssh -R 8000:localhost:22 username@防火墙IP //将远端设备的22端口数据转发到内网Linux 22端口,此处username为内网linux用户。
    内网Linux:ssh username@localhost -p 8000 //此处username为远端设备用户。

  5. andy :

    4楼的可以实现,固定IP的防火墙上映射ssh 22端口到内网linux机器。
    远端设备上:ssh -R 8000:localhost:22 username@防火墙IP //将远端设备的22端口数据转发到内网Linux 22端口,此处username为内网linux用户。
    内网Linux:ssh username@localhost -p 8000 //此处username为远端设备用户。

    正解,不過ftp會很麻煩。

Leave a Reply

Your email address will not be published. Required fields are marked *