一、Windows安装opensshfor windows
1、在gethub下载傻瓜式安装
下载地址:https://github.com/babarnazmi/WinSSH/raw/master/downloads/WinSSH.exe
2、建一个可以登录ssh的账户并设置密码
3、Cmd进入c:\program files (x86)\openssh\bin
mkgroup -l >> ..\etc\group (local groups)
mkgroup -d >> ..\etc\group (domain groups)
mkpasswd -l >> ..\etc\passwd (local users)
mkpasswd -d >> ..\etc\passwd (domain users)
4、开启服务: net start opensshd
二、全部流量转发
注:再把A主机所有得流量经A主机的某一端口通过B主机(代理服务器)转发。
1、ssh命令流量转发
命令:
ssh -D [本地IP或省略]:[本地端口] [登陆服务器的用户名@服务器IP] -p [服务器ssh服务端口(默认22)]
本机IP :192.168.2.27
SSH服务器IP:192.168.2.26
在本机(192.168.2.27)执行:SSH -qTfnN -D 10800 root@192.168.2.26
-q 安静模式,忽略一切对话和错误提示。
-T 不占用 shell 了。
-f 后台运行,并推荐加上 -n 参数。
-n -f 推荐的,不加这条参数应该也行。
-N 不执行远程命令,专为端口转发度身打造。
-g :在-L/-R/-D参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接。
或者用xsell, 隧道>添加>类型选择Dynamic,端口填一个没有被占用的,然后连接,点击查看隧道窗格可以查看,ID显示为绿点表示成功。
2、在windows主机上(192.168.2.27)的代理配置:
打开控制面板> 网络和internet > internet选项>连接>局域网设置>为LAN使用代理服务器>高级>套接字(填localhost 端口)
三、端口转发
1) -L 本地转发
# ssh -CfNg -L 1234:127.0.0.1:3389 oracle@172.16.1.164
本机(运行这条命令的主机)打开1234端口, 通过加密隧道映射到远程主机172.16.1.164的3389端口(使用远程主机oracle用户). 既:本机的1234端口等于远程的3389端口.
如图:在A上面执行

实例:把本地5601端口,转发到本地80(未开)端口
ssh -L 192.168.1.21:80:192.168.1.21.5601 localhost
2) -R 远程转发
# ssh -CfNg -R 0.0.0.0:1111:B:80 root@A
作用:把内网192.168.1.2(B)的80端口,转发到外网(A)1111端口
在B或者B的内网上面执行上条命令

注:
如果不写0.0.0.0,ssh默认会把端口转发到远程主机(A)的127.0.0.1上,也就是说,只能被本机自己访问到。如何才能让其他机器访问这个端口呢?我们可以把这个映射的端口绑定在0.0.0.0的接口上,还可以加-g参数。
需要编辑 /etc/ssh/sshd_config 打开GatewayPorts 并把no 改为yes,并重起ssh server生效
参考文献:
http://blog.csdn.net/a351945755/article/details/21785647
http://www.cnblogs.com/wangkangluo1/archive/2011/06/29/2093727.html

