SSH 端口转发

发布于 2020-11-17 09:39:56 字数 2058 浏览 1342 评论 0

ssh功能

  • SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据
  • 端口转发(tcp tunneling 隧道) 提供相应的加解密功能
加密 SSH Client 端至 SSH Server 端之间的通讯数据
	
突破防火墙的限制完成一些之前无法建立的 TCP 连接

ssh端口静态转发

  • 本地转发

appclient appserver sshclient ssh server

sshclient(A) --> sshserver(C)

A(7001) -- (389)C (假如C只限定允许是用localhost进行访问)

ssh -L <local port>:<remote host>:<remote port> <SSH hostname>

A: ssh -L 7001:localhost(C):389 C

A建立本地 7001端口到远程: ssh -L 7001:localhost(远程localhost或127.0.0.1):9876 root@10.0.2.116( == -l root 10.0.2.116)

  • 远程转发

sshclient(c)-->sshserver(A)

ssh -R <local port>:<remote host>:<remote port> <SSH hostname>

C执行: ssh -R 7001(A):localhost(C):9876(C) bosswanghai@10.0.2.19

相当于从C发起了到A的SSH连接

不管是本地转发或者远程转发,C的服务端口都是9876是固定的,ssh server端口是22也是固定的

  • 多主机转发

appclient A, appserver B, sshclient C, sshserver D AC一侧 A->C || BD一侧 B->D

sshclient C: ssh -g -L 7001:<B>:9876 <D>

-g gateway 保证其他主机可以连接到该端口

A给D9876端口发消息

curl localhost/rsp -v -x "C:7001"

该命令传递到D执行的最终结果相当于D给自己的9876端口发了个命令
curl localhost/rsp 

ssh端口动态转发

ssh -D <local port> <SSH Server>

以多主机转发为例

sshclient c执行: ssh -D 7001

补充

  • -N参数 表示连接后不登录到对端shell
  • -f参数 表示后台执行
  • -o ProxyCommand="connect -H web-proxy.oa.com:8080 %h %p "

加上了-o ProxyCommand="connect -H web-proxy.oa.com:8080 %h %p "这个参数,就让我们的ssh连接建立在了一个http代理上了,这个应用对于在公司内网里面非常实用。

其中ProxyCommand指定了使用connect程序来进行代理。通常还可以使用corkscrew来达到相同的效果。

附connect的安装。

如果你是Ubuntu或者Debain系列的使用

sudo apt-get install connect-proxy

  • 断开链接保护

一段时间没法消息:Write failed: Broken pipe

-o ServerAliveInterval=60

让其每隔一段时间就发送一些消息,想服务器说明我还活着,不管关闭了我们的连接

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84961 人气
更多

推荐作者

醉城メ夜风

文章 0 评论 0

远昼

文章 0 评论 0

平生欢

文章 0 评论 0

微凉

文章 0 评论 0

Honwey

文章 0 评论 0

qq_ikhFfg

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文