文档章节

【转载】使用ssh正向连接、反向连接、做socks代理的方法

难易
 难易
发布于 2014/12/17 10:53
字数 2056
阅读 101
收藏 0

转这个帖子,主要是提醒自己,即使是在很多后台的、命令行的领域, 只要能发挥想象力,就能发掘无限的新天地。 甚至,命令行本身的粗糙单调激发了黑客的创造力,化腐朽为神奇。命令行是第一个生态系统!


http://dzmailbox.blog.163.com/blog/static/120534385201232642637847/

最近才发现ssh有多么的强大! 在网上搜了半天,发现大多数人都是一瓶子不满的水平,浅尝辄止。就没有几个人有点儿科学研究的精神吗?为啥不把它搞明白呢? 当然,相信有不少人是很明白的,但是不愿意写博文来公开。其实这样大可不必,独乐乐不如众乐乐,何必那么小肚鸡肠?

1、用ssh做正向连接 啥叫正向连接?就是client连上server,然后把server能访问的机器地址和端口(当然也包括server自己)镜像到client的端口上。 命令: ssh -L [客户端IP或省略]:[客户端端口]:[服务器侧能访问的IP]:[服务器侧能访问的IP的端口] [登陆服务器的用户名@服务器IP]-p [服务器ssh服务端口(默认22)] 其中,客户端IP可以省略,省略的话就是127.0.0.1了,也就是说只能在客户端本地访问。服务器IP都可以用域名来代替。 举例说明: 你的IP是192.168.1.2,你可以ssh到某台服务器8.8.8.8,8.8.8.8可以访问8.8.4.4,你内网里还有一台机器可以访问你。 如果你想让内网里的另外一台电脑访问8.8.4.4的80端口的http服务,那么可以执行: ssh -L 192.168.1.2:8080:8.8.4.4:80 test@8.8.8.8 也就是说,ssh到8.8.8.8上,然后让8.8.8.8把8.8.4.4的80端口映射到本地的8080端口上,而且和本地192.168.1.2这个IP绑定。 内网里的另外一台机器可以通过IE浏览器中输入http://192.168.1.2:8080查看8.8.4.4的网页。 当然,如果是其他服务,比如ftp、ssh、远程桌面也是可以的。不过,VPN貌似是不行的,可能是因为GRE协议无法通过。

2、用ssh做反向连接 啥叫反向连接?就是client连上server,然后把client能访问的机器地址和端口(也包括client自己)镜像到server的端口上。 反向连接用得可能更多一些。比如你的客户端在内网,在外网是无法直接访问到的,这时用反向连接打通一条隧道,就可以从外网通过这条隧道进来了。 命令: ssh -R [服务器IP或省略]:[服务器端口]:[客户端侧能访问的IP]:[客户端侧能访问的IP的端口] [登陆服务器的用户名@服务器IP]-p [服务器ssh服务端口(默认22)] 其中,服务器IP如果省略,则默认为127.0.0.1,只有服务器自身可以访问。指定服务器外网IP的话,任何人都可以通过[服务器IP:端口]来访问服务。当然,这个时候服务器本机也要输入外网IP:端口来访问。 举例说明: 你的IP是192.168.1.2,你可以ssh到外网某台服务器8.8.8.8,你内网里有一台机器192.168.1.3。 如果你想让外网所有的能访问8.8.8.8的IP都能访问192.168.1.3的http服务,那么可以执行: ssh -R 8.8.8.8:8080:192.168.1.3:80 test@8.8.8.8 也就是说,ssh到8.8.8.8上,然后把本地局域网内192.168.1.3的80端口映射到8.8.8.8的8080端口上,这样外网任何一台可以访问8.8.8.8的机器都可以通过8080端口访问到内网192.168.1.3机器的80端口了。 反向连接同样支持各种服务。

3、用ssh做socks代理 假设你内网里某台机器可以上网,但是你不能上网,如果你有ssh到那台机器的权限,那么就可以利用ssh方式建立一个代理socks5,通过代理来上网。 命令: ssh -D [本地IP或省略]:[本地端口] [登陆服务器的用户名@服务器IP] -p [服务器ssh服务端口(默认22)] 道理和上面是一样的,执行这个命令之后,本地会监听指定的端口等待连接。 网上好多文章说Firefox和Chrome要下载什么插件才能支持,其实都是扯淡。 在配置代理的时候直接选择Sock5就可以了,不需要用户名和密码验证。另外,IE也是支持Sock5的,具体配置方法是:勾选为LAN使用代理服务器,然后任何字段都不要填,点“高级”按钮,在套接字里面填好相应的配置,其他都留空。 Chrome默认采用IE的配置,所以如果IE配置好了,Chrome也是可以上网的。 另外,可以使用一个叫做Sockscap的软件,把应用扔进去就能以代理的方式上网了。(部分需要调用多个进程的应用可能不行) 说句题外话,QQ2012版目前的Socks5代理上网功能貌似不支持本地Socks5代理,不过可以选择“浏览器配置”方式来规避。 把socks代理转换成http代理 如果你想把socks代理转换成http代理,可以用privoxy这个东东。去官网下载个.zip的文件包,然后解压到任意目录,执行可执行文件。 在主界面点击Options菜单->Edit Main Configuration,在弹出的文本文件中搜索forward-socks5,找到的章节就是讲socks5转换的。 回车新建一行,输入forward-socks5 / [本地IP]:[本地端口] . 注意后面还有个“.”,然后保存。 这样就可以实现把socks5代理转换成127.0.0.1:8118的http代理了。程序可以通过127.0.0.1:8118这个http代理上网。 如果你想让局域网内其他IP也能通过你的机器上网,需要修改配置文件中的listen-address部分,搜索一下相信你就会看明白了。

4、Windows下的ssh和ssh server 不要以为只有Linux下才能用ssh,Windows下一样有强大的ssh命令行工具和ssh服务器。并且对以上功能支持的都很好。 那就是伟大的PuTTY!去官方网站下载吧! ssh命令行客户端对应的是plink.exe,命令稍微有一点不同(比如指定端口是大写的P),具体看帮助文件稍作修改就好了。 ssh服务器端是WinSSHD,傻瓜式安装,默认配置支持windows用户认证。

5、自动连接和防断线脚本 如果你想让连接长期保持,可以写个脚本来保证因为网络原因断线的话可以自动重连。 先说Windows平台,用plink -pw参数可以指定密码,所以只要写个批处理: :1 plink -pw “password” -D 7070 user@serverip goto 1 这样应该就可以解决大多数问题造成的断线。 Linux平台ssh默认不支持把密码作为参数,不过有sshpass可以搞定 http://sourceforge.net/projects/sshpass/files/latest/download 下载,解压,编译,把可执行文件拷贝到合适的目录,执行命令格式如下: sshpass -p "password" ssh -D 7070 user@serverip 貌似ubuntu下可以直接apt-get install sshpass 然后写脚本autossh.sh,内容如下: #!/bin/bash while [ '' == '' ] do ssh_d_process_num=ps aux|grep -E 'ssh \-' |grep -v grep |wc -l if [ "$ssh_d_process_num" == "0" ]; then /home/user/sshpass -p "password" ssh -D 7070 user@ServerIP & fi sleep 300 done 执行一下这个脚本就可以了。sleep 300代表300秒查看一次,可以根据需要调整。 6、常用参数 其实一般来说不是很有必要加特殊的参数,不过以下几个可以根据需要选择 -q 静默运行,就算出错也啥都不提示 -f 后台运行 -C 压缩,带宽很差的时候压缩会快一些,否则会更慢 -i xxx.file 提供公钥文件直接验证 -l 指定用户名,其实就是@前面写的那个。 其他的不太常用,自己查手册吧~

本文转载自:http://dzmailbox.blog.163.com/blog/static/120534385201232642637847/

共有 人打赏支持
难易

难易

粉丝 262
博文 44
码字总数 100878
作品 2
杭州
程序员
使用ssh正向连接、反向连接、做socks代理的方法

使用ssh正向连接、反向连接、做socks代理的方法 Submitted by admin on Sat, 12/01/2012 - 20:54 Linux Network 来源地址: http://dzmailbox.blog.163.com/blog/static/120534385201232642......

无明时空
2013/11/30
0
2
Proxy-Go v5.4 发布:强化内网穿透 , 增加使用代理功能

Proxy-Go v5.4发布了。Proxy是golang实现的高性能http,https,websocket,tcp,udp,socks5代理服务器,支持正向代理、反向代理、透明代理、内网穿透、TCP/UDP端口映射、SSH中转、TLS加密传输、协...

狂奔的蜗牛.
08/30
0
0
烂泥:学习ssh之ssh隧道应用

本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb。 前几篇有关ssh的文章,我们只是介绍了ssh的登录功能。其实ssh功能不只是这些,这篇文章我...

烂泥行天下
2015/09/18
184
0
Proxy-Go v4.8 发布:内存等多项优化,看 4K 无鸭梨!

Proxy-Go v4.8发布了。Proxy是golang实现的高性能http,https,websocket,tcp,udp,socks5代理服务器,支持正向代理、反向代理、透明代理、内网穿透、TCP/UDP端口映射、SSH中转,TLS加密传输,协...

狂奔的蜗牛.
05/22
0
0
Proxy-Go v4.7 发布,划时代版本,SDK,GUI 应有尽有!

Proxy-Go v4.7 发布了。Proxy是golang实现的高性能http,https,websocket,tcp,udp,socks5代理服务器,支持正向代理、反向代理、透明代理、内网穿透、TCP/UDP端口映射、SSH中转,TLS加密传输,协...

狂奔的蜗牛.
04/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

并发编程—Java多线程总结

目录 先了解几个概念 多线程:进程和线程是一对多的关系,一个进程(一个程序),由不同的线程来运行。有共享的空间也有独立的空间。 并行: 同时进行,拿两个cpu来跑同样的程序同样的代码片段...

Java干货分享
9分钟前
0
0
Windows Update真的需要向Linux学习

| 虽然简单地将驱动程序从典型的Windows更新中分离出来可能是一种防止这种情况发生的方法,但是Linux甚至更进一步,让用户能够更好地控制他们可以安装的驱动程序。像Ubuntu和Linux Mint这样的...

Linux就该这么学
10分钟前
0
0
Linux学习-0926

4.5/4.6 磁盘格式化 4.7/4.8 磁盘挂载 4.9 手动增加swap分区 一、磁盘格式化 磁盘进行分区后如果不进行格式化,是无法使用的。 linux系统的文件类型: 可以使用使用以下方式进行查看linux系统...

wxy丶
11分钟前
0
0
elasticsearch安装

elasticsearch安装 一、下载: wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.1.tar.gz 二、解压: tar zxvf elasticsearch-5.6.1.tar.gz 三、改名: ......

小杰java
13分钟前
0
0
Vue router传参 四

传递的方法 //传递<router-link :to="{path:'',query:{id:123}}">产品</router-link>//获取this.$route.query.id 这里可以传params 相当于POST 但 :to里面只能是name query 相当......

大灰狼wow
23分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部