SSH 代理
2017-12-05 16:31
162 查看
SSH代理有正向代理和反向代理:
个人对正向代理的理解是为别的服务器开放端口,反向代理就是转发本地端口到别的服务器端口。
SSH有几个参数:
-f 后台运行
-N 不执行命令
-L 转发本地端口
-R 请求远端端口
场景
波波(技术实施人员)在客户处实施项目
能 SSH 访问客户服务器
能访问外网(包括咱公司公网服务器)
没有外网 IP,不能通过 SSH 被直接连接到
霸哥(研发人员)在公司内部局域网内,但是需要连接客户局域网内的客户服务器,进行调试
方案
波波使用 XShell(SSH)做两次代理:
将波波笔记本上的本地指定端口 9999 正向代理到客户服务器的 SSH 服务端口
将咱公司公网服务器远端指定端口 9527 反向代理到波波笔记本上的本地指定端口 9999
霸哥登录咱公司公网服务器,SSH 连接本地 9527 端口,经过波波的代理,连接到客户服务器的 SSH 服务端口
提示:HTTP 服务也可以通过类似步骤实现中转,通过访问我们本地指定端口,经过对方网络内的某一台机器中转,访问客户局域网内的 Web 服务。
步骤
XShell 建立两个连接
客户服务器
咱公司公网服务器
切换到客户服务器连接的那个界面
点击界面上的查看 -> 隧道窗格
下面新出现的那一栏中切换到转移规则标签
鼠标右击,选择添加
类型:Local(Outgoing)
源主机:localhost
侦听端口:9999
目标主机:localhost
目标端口:客户服务器 SSH 端口,比如 22
确定
切换到咱公司公网服务器连接的那个界面
点击界面上的查看 -> 隧道窗格
下面新出现的那一栏中切换到转移规则标签
鼠标右击,选择添加
类型:Remote(Outgoing)
源主机:localhost
侦听端口:9527
目标主机:localhost
目标端口:9999
确定
在咱公司公网服务器上,通过以下命令实现对客户服务器 SSH 服务的访问:ssh @localhost -p 9527
说明: 是客户服务器的用户名
原理
原理我并不清楚,不过我猜,可能是这样:
正向代理
A 机器发起 SSH 连接(隧道 0),连接到 B 机器
A 机器复制一个 SSH 连接(隧道 1)
并且告诉 B 机器,建立一个指向你 22 端口的连接,然后:
将来自 SSH 连接(隧道 1)的数据都通过这个连接发出去
将来自这个连接的数据都通过 SSH 连接(隧道 1)发给 A 机器
A 机器监听一个本地端口 9999,如果有程序连接到 9999 端口的话:
将来自 SSH 连接(隧道 1)的数据都通过这个连接发出去
将来自这个连接的数据都通过 SSH 连接(隧道 1)发给 B 机器
说明:
A 机器,实际上是 A 机器上的 ssh 程序
B 机器,实际上是 B 机器上的 sshd 程序
Linux 命令:
个人对正向代理的理解是为别的服务器开放端口,反向代理就是转发本地端口到别的服务器端口。
SSH有几个参数:
-f 后台运行
-N 不执行命令
-L 转发本地端口
-R 请求远端端口
场景
波波(技术实施人员)在客户处实施项目
能 SSH 访问客户服务器
能访问外网(包括咱公司公网服务器)
没有外网 IP,不能通过 SSH 被直接连接到
霸哥(研发人员)在公司内部局域网内,但是需要连接客户局域网内的客户服务器,进行调试
方案
波波使用 XShell(SSH)做两次代理:
将波波笔记本上的本地指定端口 9999 正向代理到客户服务器的 SSH 服务端口
将咱公司公网服务器远端指定端口 9527 反向代理到波波笔记本上的本地指定端口 9999
霸哥登录咱公司公网服务器,SSH 连接本地 9527 端口,经过波波的代理,连接到客户服务器的 SSH 服务端口
提示:HTTP 服务也可以通过类似步骤实现中转,通过访问我们本地指定端口,经过对方网络内的某一台机器中转,访问客户局域网内的 Web 服务。
步骤
XShell 建立两个连接
客户服务器
咱公司公网服务器
切换到客户服务器连接的那个界面
点击界面上的查看 -> 隧道窗格
下面新出现的那一栏中切换到转移规则标签
鼠标右击,选择添加
类型:Local(Outgoing)
源主机:localhost
侦听端口:9999
目标主机:localhost
目标端口:客户服务器 SSH 端口,比如 22
确定
切换到咱公司公网服务器连接的那个界面
点击界面上的查看 -> 隧道窗格
下面新出现的那一栏中切换到转移规则标签
鼠标右击,选择添加
类型:Remote(Outgoing)
源主机:localhost
侦听端口:9527
目标主机:localhost
目标端口:9999
确定
在咱公司公网服务器上,通过以下命令实现对客户服务器 SSH 服务的访问:ssh @localhost -p 9527
说明: 是客户服务器的用户名
原理
原理我并不清楚,不过我猜,可能是这样:
正向代理
A 机器发起 SSH 连接(隧道 0),连接到 B 机器
A 机器复制一个 SSH 连接(隧道 1)
并且告诉 B 机器,建立一个指向你 22 端口的连接,然后:
将来自 SSH 连接(隧道 1)的数据都通过这个连接发出去
将来自这个连接的数据都通过 SSH 连接(隧道 1)发给 A 机器
A 机器监听一个本地端口 9999,如果有程序连接到 9999 端口的话:
将来自 SSH 连接(隧道 1)的数据都通过这个连接发出去
将来自这个连接的数据都通过 SSH 连接(隧道 1)发给 B 机器
说明:
A 机器,实际上是 A 机器上的 ssh 程序
B 机器,实际上是 B 机器上的 sshd 程序
Linux 命令:
-Nf 参数作用:连接连接之后不执行命令(通过 login 程序登录虚拟终端),关闭隧道 0,保持隧道 1,然后转入后台运行
ssh -NfL 9999:相关文章推荐
- 使用ssh代理映射IP到本地http访问
- Xshell通过SSH密钥、SSH代理连接Linux服务器详解
- SSH 反向代理模式中,在连接公网服务器给局域网电脑映射的端口时 遇到的 connection refused 问题
- 苹果 Mac safari issh SSH 代理设置方法
- SSH中事务配置详解(所有Bean共享一个代理基类)
- ssh代理上谷歌查资料
- SSH中的Spring事务代理的常用的两种方法
- [Shell] 简单的自动检查ssh代理是否正常的脚本
- ssh 反向代理举例
- ssh 代理详细解释
- ssh隧道与代理
- SSH中事务配置详解(每个Bean都有一个代理)
- DNS隧道之DNS2TCP实现——dns2tcpc必须带server IP才可以,此外ssh可以穿过墙的,设置代理上网
- ssh反向代理使用
- ssh 反向代理 外网访问内网
- ssh代理上国外任何网站,ssh教程
- 通过ssh代理上网