ssh 代理详细解释

原文地址为: ssh 代理详细解释

ssh 代理详细解释

ssh -qTfnN -D 7070 ape@192.168.1.35

ssh -CfNg -R 1521:127.0.0.1:80 ape@192.168.1.35

参考地址:

http://hi.baidu.com/edeed/item/e393cf34a76eb8f3e7bb7ab8

http://hi.baidu.com/step_1/blog/item/271f831bfbc198f1ae5133b7.html

http://hi.baidu.com/deyu260/blog/item/3be433093e5779a12eddd418.html

http://hi.baidu.com/laowuuser/blog/item/317647c7992a65de38db4946.html

参考文档:

1.

SSH: Port Forwarding
1 .正向隧道 - 隧道监听本地port,为普通活动提供安全连接
ssh
- qTfnN - L port:host:hostport - l user remote_ip
2 .反向隧道 ---- 隧道监听远程port,突破防火墙提供服务
ssh
- qTfnN - R port:host:hostport - l user remote_ip
3 .socks代理
SSH
- qTfnN - D port remotehost(用证书验证就直接主机名,没用的还要加上用户名密码)
- q Quiet mode. 安静模式,忽略一切对话和错误提示。
- T Disable pseudo - tty allocation. 不占用 shell 了。
- f Requests ssh to go to background just before command execution. 后台运行,并推荐加上 - n 参数。
- n Redirects stdin from / dev / null (actually, prevents reading from stdin). - f 推荐的,不加这条参数应该也行。
- N Do not execute a remote command. 不执行远程命令,专为端口转发度身打造。

2.

ssh实现转发, 只要用到以下两条命令:

# ssh
- CfNg - L 6300 : 127.0 . 0.1 : 1521 oracle@ 172.16 . 1.164
# ssh
- CfNg - R 1521 : 127.0 . 0.1 : 6300 oracle@ 172.16 . 1.164

不论是做跳板, 还是加密隧道, 还是加密其他的网络连接也都是这两条命令. 视具体情况而定, 有时只要用到其中一条, 有时两条都要用到.

命令解释:

1 ) - CfNg

C表示压缩数据传输
f表示后台用户验证,这个选项很有用,没有shell的不可登陆账号也能使用.
N表示不执行脚本或命令
g表示允许远程主机连接转发端口

2 ) - L 本地转发

# ssh
- CfNg - L 6300 : 127.0 . 0.1 : 1521 oracle@ 172.16 . 1.164

本机(运行这条命令的主机)打开6300端口, 通过加密隧道映射到远程主机172.
16.1 .164的1521端口(使用远程主机oracle用户). 在本机上用netstat - an | grep 6300可看到. 简单说,本机的6300端口就是远程主机172. 16.1 .164的1521端口.

3 ) - R 远程转发

# ssh
- CfNg - R 1521 : 127.0 . 0.1 : 6300 oracle@ 172.16 . 1.164

作用同上, 只是在远程主机172.
16.1 .164上打开1521端口, 来映射本机的6300端口.

4 ) 实用例子

有A,B,C 3台服务器, A,C有公网IP, B是某IDC的服务器无公网IP. A通过B连接C的80端口(A
<=> B <=> C), 那么在B上执行如下命令即可:

$ ssh
- CfNg - L 6300 : 127.0 . 0.1 : 80 userc@C
$ ssh
- CfNg - R 80 : 127.0 . 0.1 : 6300 usera@A

服务器A和服务器C之间, 利用跳板服务器B建立了加密隧道. 在A上连接127.
0.0 . 1 : 80 , 就等同C上的80端口. 需要注意的是, 服务器B上的6300端口的数据没有加密, 可被监听, 例:

# tcpdump
- s 0 - i lo port 6300

3.

http: // bianbian.org/technology/264.html

里有一些好用的网址,介绍ssh及其代理穿透防火墙的



http:
// www.inet.no/dante/

Dante
-- Proxy communication solution



ssh 是有端口转发功能的。(转)
http:
// doc.linuxpk.com/80817.html

ssh的三个强大的端口转发命令:

QUOTE:
ssh
- C - f - N - g - L listen_port:DST_Host:DST_port user@Tunnel_Host
ssh
- C - f - N - g - R listen_port:DST_Host:DST_port user@Tunnel_Host
ssh
- C - f - N - g - D listen_port user@Tunnel_Host
- f Fork into background after authentication.
后台认证用户
/ 密码,通常和 - N连用,不用登录到远程主机。

- p port Connect to this port. Server must be on the same port.
被登录的ssd服务器的sshd服务端口。

- L port:host:hostport
将本地机(客户机)的某个端口转发到远端指定机器的指定端口. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 同时远程主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有 root 才能转发特权端口. IPv6 地址用另一种格式说明: port
/ host / hostport

- R port:host:hostport
将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口. 工作原理是这样的, 远程主机上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转向出去, 同时本地主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有用 root 登录远程主机才能转发特权端口. IPv6 地址用另一种格式说明: port
/ host / hostport

- D port
指定一个本地机器 “动态的
' ’ 应用程序端口转发. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 根据应用程序的协议可以判断出远程主机将和哪里连接. 目前支持 SOCKS4 协议, 将充当 SOCKS4 服务器. 只有 root 才能转发特权端口. 可以在配置文件中指定动态端口的转发.

- C Enable compression.
压缩数据传输。

- N Do not execute a shell or command.
不执行脚本或命令,通常与
- f连用。

- g Allow remote hosts to connect to forwarded ports.
- L /- R /- D参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接



Linux命令行下SSH端口转发设定笔记(转)

原文:http:
// be-evil.org/post-167.html

在Windows下面我们可以很方便的使用putty等ssh工具来实现将服务器上的端口映射到本机端口来安全管理服务器上的软件或者服务 那么我们换到在Liunx下我们应该怎么做呢?

ssh
- L 本地端口:服务器地址:服务器端口 用户名@服务器地址 - N

参数详解:

- L 端口映射参数 本地端口 - 这个任意即可,只要本机没有其他的程序占用这个端口就行

服务器地址
- 你需要映射的服务器地址(名称 / ip)

服务器端口
- 远程的服务器端口

- N - 不使用Shell窗口,纯做转发的时候用,如果你在映射完成后继续在服务器上输入命令,去掉这个参数即可

例子A:我们想远程管理服务器上的MySQL,那么使用下面命令

ssh
- L 3306 : 127.0 . 0.1 : 3306 user@emlog - vps - N
运行这个命令之后,ssh将会自动将服务器的3306映射到本机的3306端口,我们就可以使用任意MySQL客户端连接 localhost:3306即可访问到服务器上的MySQL了。

例子B:一次同时映射多个端口

ssh
- L 8888 :www.host.com: 80 - L 110 :mail.host.com: 110 \ 25 :mail.host.com: 25 user@host - N
这个命令将自动把服务器的80,
110 ,25端口映射到本机的8888,110和25端口 以上命令在ubuntu 9.10 上测试通过...



关于ssh端口转发的深入实例[转]

http:
// blog.myhnet.cn/2009/01/08/deepin-instances-of-ssh-port-forwarding/

首先,认识下这三个非常强大的命令:

ssh
- C - f - N - g - L listen_port:DST_Host:DST_port user@Tunnel_Host
ssh
- C - f - N - g - R listen_port:DST_Host:DST_port user@Tunnel_Host
ssh
- C - f - N - g - D listen_port user@Tunnel_Host
相关参数的解释:
- f Fork into background after authentication.
后台认证用户
/ 密码,通常和 - N连用,不用登录到远程主机。

- L port:host:hostport
将本地机(客户机)的某个端口转发到远端指定机器的指定端口. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 同时远程主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有 root 才能转发特权端口. IPv6 地址用另一种格式说明: port
/ host / hostport

- R port:host:hostport
将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口. 工作原理是这样的, 远程主机上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转向出去, 同时本地主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有用 root 登录远程主机才能转发特权端口. IPv6 地址用另一种格式说明: port
/ host / hostport

- D port
指定一个本地机器 “动态的’’ 应用程序端口转发. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 根据应用程序的协议可以判断出远程主机将和哪里连接. 目前支持 SOCKS4 协议, 将充当 SOCKS4 服务器. 只有 root 才能转发特权端口. 可以在配置文件中指定动态端口的转发.

- C Enable compression.
压缩数据传输。

- N Do not execute a shell or command.
不执行脚本或命令,通常与
- f连用。

- g Allow remote hosts to connect to forwarded ports.
- L /- R /- D参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接。注:这个参数我在实践中似乎始终不起作用

实例说明:
一台服务器提供ftp服务,因为ftp传输是明文密码,如果不做ssh端口之前,我们可以通过tcpdump命令很容易的捕捉到明文信息。所以我们要对21端口进行转发:

ftp
- server# ssh - CNfg - R 2121 :localhost: 21 root@ 100.0 . 0.50
然后登录到100.
0.0 .50机器,我们可以通过netstat - an | grep :2121查看端口已经侦听

100.0 . 0.50 # ftp localhost 2121
就可以登录到ftp
- server了,而且tcpdump无法捕获到有效的信息。
2121端口任意选择,只要是机器上没有占用的端口就行

来一个稍微复杂一点的,做网关的例子:
假如内网有一台提供ftp(linux,port
is 2121 ,称为A机器)的机器,通过网关服务器(linux,port is 8888 ,称为B机器)进去,现在外网有一台C机器需要访问网关服务器的某个端口(port is 21 )来访问内网的ftp服务器。大家可以看到,其实这就像是一个基于ssh的防火墙程序,好,下面我们来具体操作:
1 、login A 机器

# ssh
- CNfg - R 8888 :localhost: 2121 root@B机器IP
这样我们就在B机器上开了一个8888
-> 2121的端口转换,但是由于8888端口只能侦听在localhost主机上,因此,虽然我们已经可以在B机器上使用

# ftp localhost
8888
来访问真正的ftp服务器,但仍然无法提供给外网的机器访问

2 、login B机器

# ssh
- CNfg - L 21 :localhost: 8888 root@localhost
这样做,是做本地机器上的21
-> 8888端口转换,可以侦听在任何地址上的请求。
2 ( 1 )。
如果C机器也是一台linux机器,那也可以这样设置:

# ssh
- CNfg - R 21 :localhost: 8888 root@C机器IP
3 。使用C机器,
可以是linux下的ftp命令,也可以是windows下的客户端软件都可以访问B机器的21端口来连接后台真正的ftp服务器(真正的端口是2121)
如果是按照2(
1 )中的设置,则访问的地址为本机IP。

 


转载请注明本文地址: ssh 代理详细解释
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值