2024年4月2日发(作者:)

1、突破防火墙限制,访问内网资源

要实现该目的,通常的做法是修改防火墙,做映射。但我这里使用的不是这样:

服务端:可以访问内网的其他机器;并且启动了sshd服务,在防火墙上已经打开了

对应的映射;也就是说,客户端可以通过外网连接到该内网的服务器ssh服务。(这样的情

况应该是很普遍,而且比较安全的)

客户端:可以是Linux或Windows等平台

◎假设我要访问内网一台192.168.228.110的机器上的web服务。

服务端启动ssh可以使用,默认设置即可:

service sshd start

Linux客户端:

ssh -l test -L 80:192.168.228.110:80

其中test是打开了sshd服务的服务器上的帐号。-L参数含义是

引用

-L [bind address:]port:host:hostport

也就是要本地启动的端口和远程转发到机器的IP和端口。

当运行该命令,并通过密码认证进入服务器后。(保持该进程,不要关闭)今后访问本

地是80端口的数据都会通过:22转发到192.168.228.110:80上,类似:

引用

localhost:80-->:22-->192.168.228.110:80

所以,我们只要用浏览器打开本地是localhost/,即可访问到另外一个局域网

的内网机器了。

※注意,指定的本地端口不能已经被占用的。若已有80,可以用其他端口代替。

Windows客户端:

2、基于ssh的Socks5代理

过去,我们是通过类似sock5的软件来实现Socks5代理,其实ssh也可以做到:

服务端:要求同上面一样,可以允许外面访问到它。而且它必须也能访问到Internet。

(否则这个代理就没用了)

客户端:可以是Linux或Windows等平台

服务端启动ssh可以使用,默认设置即可:

service sshd start

Linux客户端:

ssh -2 -l test -D 3121

其中,-2是使用ssh2协议,-D参数是指定一个本地动态的,软件等级的端口用于转

发,可以实现Socks4、5的转发。

当登陆到服务器后,在本地为需要使用代理的软件设置代理即可。

Windows客户端:

3、实现远程端口监听

有本地转发还不够,我们希望可以实现远程的数据转发。这样就是做到在远端机器上

打开一个监听的端口,当有数据访问该端口的时候,数据可以转发到本地上来。

服务端:要求和2相同。但增加一个就是要打开的端口,例如11111,也必须在防火

墙上设置好映射。否则,这样的监听是无效的。还有就是,因为要打开ssh的Remote port

forwarding功能,所以必须有提供ssh服务器上的root权限。

客户端:可以是Linux或Windows等平台

服务端启动ssh可以使用,默认设置即可:

service sshd start

Linux客户端:

ssh -2 -l root -R 11111:localhost:11111

可以看到,登陆的必须使用root用户;-R参数含义是:

引用

-R [bind address:]port:host:hostport

也就是远程转发到机器的IP和端口和本地启动的端口。

今后访问远端是11111端口的数据都会通过转发到

localhost:1111上,类似:

引用

:某端口-->ssh ip:11111-->localhost:11111

默认监听端口是在loopback网卡,若要转发到的不是该地址,而是设定了[bind

address:],则ssh服务器必须打开GatewayPorts状态到enabled。

另外,而且我们需要同步使用Socks5代理和远端监听功能(例如bt服务、ftp服务),

则可以用-A参数连接:

ssh -2 -R 11111:localhost:11111 -A -D 3121

本篇文章来源于:开发学院 原文链接:

/2009/1027/