用ssh做代理

最近在做实验的时候碰到这样一种情况,实验室的刀片服务器不能供外部访问,但有一台作为头结点的服务器结点有外网IP且能访问这些刀片,而我能够通过ssh登录到头结点,于是我就试图用头结点作为ssh代理访问到刀片机上的Web站点。

 

[Windows环境下]

 

需要用到plink.exe这个工具,它是包含在putty安装目录里面的。

 

方法如下:

 

为plink.exe新建一个一个快捷方式,然后加入以下参数:
plink.exe -v -C -N -D 127.0.0.1:7000 -l root -P xx 98.143.xxx.xxx


格式翻译过来就是:


plink.exe -显示详细信息 -启用数据压缩 -不显示shell -端口动态转发 代理IP:端口 -l 远程主机用户名 -P 远程主机端口 远程主机IP
双击该快捷方式,会显示登录信息,最后停在输入密码的位置,然后输入远程主机的密码,回车,代理就启用了。
如果安全性不重要可以加上一个 -pw 参数以自动输入密码。

 

还有一种方法,直接用putty,在putty的登录设置中配置tunnel,目标设置为Dynamic,添加一个端口,比如7000(普通用户需要1024以上端口),在Destination中填写代理服务器的IP与端口(ssh端口一般为22),再按Add,一个动态转发端口就实现了。然后用相应的ssh账号登录后,此时的putty就相当于一个代理。

 

现在,就可以用此代理使用web、ftp、ssh等服务了,只要在相应的软件中设置好socks5代理即可,代理的地址为127.0.0.1:7000

 

还有一个更为简便的方法,就是直接用一个叫myentunnel的软件,下载后,填好服务器、用户名、密码、本地代理端口就OK了,实际上就是上面的putty的一个界面封装,但用起来方便多了。

 

[Linux环境下]

 

Linux环境下更简单,不需要装什么软件,因为Linux发行版一般都带有ssh工具,可以利用ssh的命令的port forwarding特性,所以只需要直接在终端中输入以下命令即可:

ssh -CfNg -D 7000 name@host

 

接下来就和Windows下的一样,将需要用到代理的地方设置好socks5代理,地址为127.0.0.1:7000

 

你可能感兴趣的:(C++,c,Web,ssh,C#)