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

ssh -L 219.143.16.157:58080:172.21.163.32:8080 用户名@localhost -p 10142

在 219.143.16.157机器执行   将ssh隧道打通 将172.21.163.32:8080 映射到本机58080上

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 [email protected]

也就是说,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 [email protected]

也就是说,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 [email protected]

goto 1

这样应该就可以解决大多数问题造成的断线。

Linux平台ssh默认不支持把密码作为参数,不过有sshpass可以搞定

http://sourceforge.net/projects/sshpass/files/latest/download

下载,解压,编译,把可执行文件拷贝到合适的目录,执行命令格式如下:

sshpass -p "password" ssh -D 7070 [email protected]

貌似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 [email protected] & fi

sleep 300done

执行一下这个脚本就可以了。sleep 300代表300秒查看一次,可以根据需要调整。

6、常用参数

其实一般来说不是很有必要加特殊的参数,不过以下几个可以根据需要选择

-q 静默运行,就算出错也啥都不提示

-f 后台运行

-C 压缩,带宽很差的时候压缩会快一些,否则会更慢

-i xxx.file 提供公钥文件直接验证

-l 指定用户名,其实就是@前面写的那个。

其他的不太常用,自己查手册吧~

来源: http://blog.csdn.net/linsanhua/article/details/17360369

来自为知笔记(Wiz)

时间: 2024-12-29 10:22:03

使用ssh正向连接、反向连接、做socks代理的方法的相关文章

正向反向与动态socks代理的SSH隧道介绍

正文请见附件.谢谢! 正向反向与动态socks代理的SSH隧道介绍

使用 SSH 隧道实现端口转发、SOCKS 代理

SSH隧道 本地端口转发 本地客户端通过 local_port 连接到 MobaXterm: MobaXterm 绕过防火墙,使用 user 用户连接到 ssh_server_ip:ssh_server_port 的 SSH 服务器: SSH 服务器连接到 romote_ip:romote_port 的远程服务器. ssh -N -f -L local_port:romote_ip:romote_port [email protected]_server_ip:ssh_server_port -

tips server ssh 正向 反向 代理

1. ssh [email protected]115.28.87.102           (直接使用ssh的连接方式连接到远程主机,而不是使用http,ftp等方式连接到具体远程主机)          退出并注销关闭连接 exit 2.left-connection(左连接 正向连接) 1 ssh -L client_ip(可省略,省略则为默认值127.0.0.1):client_port 2 :server_ip(服务器那端能访问的ip地址a):server_port(a的端口) 3

ssh做反向连接之我的实践

在公司内有一台服务器,是在多重局域网之下的. 我在家的时候向访问这服务器,查攻略,最后按如下方式解决: 假设服务器A的ip 为192.168.100.100    用户名为aa 我的电脑B的ip为    D.D.D.D    用户名为bb 我通过一个具有公网ip的电脑C把A,B链接起来,C的ip为 C.C.C.C     用户名为cc Step1:在A上执行 ssh -f -N -R 10000:localhost:22 [email protected] 这一步让A主动建立反向连接    St

SSH反向连接及Autossh

转自: http://www.cnblogs.com/eshizhan/archive/2012/07/16/2592902.html SSH反向连接及Autossh 0.接触Linux恐怕对SSH再熟悉不过了,还有scp,sftp各种方便的功能,一般的使用都需要ip:port(如果不是默认22的话),但有些情况比较特殊,就是想连接一台内网主机(比如公司内网,当然你肯定做不了Port Forwarding,除非你想在公司防火墙上拆个洞).稍懂一点网络的童鞋会明白,Internet上去主动连接一台

[转]SSH反向连接及Autossh

http://www.cnblogs.com/eshizhan/archive/2012/07/16/2592902.html SSH反向连接及Autossh 0.接触Linux恐怕对SSH再熟悉不过了,还有scp,sftp各种方便的功能,一般的使用都需要ip:port(如果不是默认22的话),但有些情况比较特殊,就是想连接一台内网主机(比如公司内网,当然你肯定做不了Port Forwarding,除非你想在公司防火墙上拆个洞).稍懂一点网络的童鞋会明白,Internet上去主动连接一台内网是不

Windows 下 Git SSH 连接方式配置 Socks 代理

原文章作者: upupming 原文章链接: https://upupming.site/2019/05/09/git-ssh-socks-proxy/ 最近从 GitHub clone 仓库速度极慢,遂查阅资料解决之.本文主要介绍 Git 使用 SSH 克隆时如何走 Socks 代理,因为使用 HTTPS 克隆的话目前基本上很容易找到资料,比如 Using a socks proxy with git for the http transport | Stackoverflow. 正如那个回答

SSH 正向/反向代理小记

上周因为玩耍Minecraft的原因,折腾了下ssh的正向.反向代理,不得不说,科技改变命运..了解了基础的用法之后,很多跨域的事情都可以通过代理解决,而且只需要ssh帐号权限即可. 那么就简单来介绍下吧,常见的SSH代理介绍文章都会上来先描述场景,例如ABC三个域,怎么样访问之类,看完头就晕了,我换个说法: 1.  minecraft ssh代理 ssh -fCNR 9977:localhost:25565 [email protected] -p 6666 -o TCPKeepAlive=y

raspberrypi 3学习笔记(四)——SSH及VNC远程连接

下面就讲解一些树莓派如何进行远程连接. 一.SSH远程登录 首先,确保树莓派与电脑连接在同一局域网以内.如果你的树莓派具有图形界面,打开命令输入终端,输入:  ifconfig 然后就会弹出相关的网络连接信息,这时候你知道找到树莓派的IP地址记下就行. 如果没有图形界面,还可以通过路由器查看,在电脑浏览器输入192.168.1.1,然后登陆路由器,就可以找到树莓派连接的ip地址,我的树莓派ip地址是192.168.1.100 然后我们就可以通过 ssh 登录树莓派了.windows 下可以通过