[原创]SSH 隧道转发
简介
建立ssh隧道常用于, 通过一台公网的主机或者是大家都可以访问的主机做跳转机,来访问内部或者外部不能直接访问的机器.
项目当前用途:
由于服务端上假设架设的redis未设置加密, 因此通过防火墙了屏蔽redis端口(6379), 其他外网机器需要连接到该端口就可以使用ssh隧道建立端口转发绕过防火墙.
参考文章: https://www.cnblogs.com/fbwfbi/p/3702896.html
本地SSH隧道
ssh -Nf -L {本地端口}:{目标机器}:{目标端口} {中间机器}
# 或
ssh -Nf -L {本地地址}:{本地端口}:{目标机器}:{目标端口} {中间机器}
若{本地地址}
未配置, 则默认为 127.0.0.1
, 即只有本机可以访问该转发端口
{中间机器}
可指定登陆的用户名{user@xx.xx.xx.xx}
示例
# 以下命令都是在 192.168.0.100 上执行
# 从 192.168.0.100 通过 123.123.123.123 访问 234.234.234.234
ssh -N -f -L 2121:234.234.234.234:21 123.123.123.123
ftp localhost:2121 # 现在访问本地2121端口,就能连接234.234.234.234的21端口了
- -N 告诉SSH客户端,这个连接不需要执行任何命令。仅仅做端口转发
- -f 告诉SSH客户端在后台运行
- -L 做本地映射端口,被冒号分割的三个部分含义分别是
- 需要使用的本地端口号
- 需要访问的目标机器IP地址(IP: 234.234.234.234)
- 需要访问的目标机器端口(端口: 21)
最后一个参数是我们用来建立隧道的中间机器的IP地址(IP: 123.123.123.123)
-L X:Y:Z的含义是,将IP为Y的机器的Z端口通过中间服务器映射到本地机器的X端口。
远程SSH隧道
#
ssh -Nf -R {远程端口}:{本地机器}:{本地端口} {远程机器}
# 或
ssh -Nf -R {远程绑定地址}:{远程端口}:{本地机器}:{本地端口} {远程机器}
{本地机器}
不一定是本机, 也可以是局域网内与本机联通的主机, 任何访问{远程机器}:{远程端口}
的都会被连接到{本地机器}:{本地端口}
, 执行上述命令的主机本质上是作为中转主机.{远程绑定地址}
若不填写, 则默认是127.0.0.1
, 若要允许其他机器通过{远程机器}:{远程端口}
来访问该隧道, 则可将该地址配置为0.0.0.0
(即{远程机器}
上会监听来自0.0.0.0:{远程端口}
的tcp连接
{远程机器}
记得将 sshd 的 GatewayPorts
打开
vim /etc/ssh/sshd_config
# GatewayPorts yes
service sshd reload
示例
利用 A(内网)-B-D 方向的连接 来建立 D-B-A方向的访问
# 在 192.168.0.100 上执行如下命令
ssh -Nf -R 2222:127.0.0.1:22 123.123.123.123
# 在远程 123.123.123.123 机器上执行如下命令即可连接到 A机器(192.168.0.100)的22端口
ssh -p 2222 localhost
-R 参数
- 远程机器使用的端口(2222)
- 需要映射的内部机器的IP地址(127.0.0.1)
- 需要映射的内部机器的端口(22)
FAQ
免密码登陆
配置使用密钥连接
自动重连
隧道可能因为某些原因断开,例如:机器重启,长时间没有数据通信而被路由器切断等等。
可以通过配置 supervisord, 确保链接断开时自动重连, 但配置时应去掉 -f
参数(不放在后台执行)
自动重连需配合"免密码登陆"
supervisord配置示例
[program:ssh_tunel_3690]
command=ssh -N -L 36901:127.0.0.1:3690 publisher@123.59.xx.xx
numprocs=1
autostart=true
autorestart=true
startretries=10
redirect_stderr=true
stdout_logfile=/data/tmp/supervisord/ssh_tunel_3690.log
supervisorctl update
[原创]SSH 隧道转发的更多相关文章
- 公司内网Debian Server上的openvpnserver搭建并通过SSH隧道转发到广域网
因为戴维营公司在长沙的学员,研发人员和北京的研发人员须要协同研发,故须要让北京的兄弟们增加到长沙办公室的内网,訪问版本号 管理server,于是採用在内网server上搭建一个OpenVPN服务,并把 ...
- ssh 隧道
SSH 隧道转发实战 大家都知道SSH是一种安全的传输协议,用在连接服务器上比较多.不过其实除了这个功能,它的隧道转发功能更是吸引人.下面是个人根据自己的需求以及在网上查找的资料配合自己的实际操作 ...
- SSH: ssh隧道
简介 Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境.SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接. ...
- ssh隧道(端口转发)
本地转发: ssh -Nf -L [bind_address:]port:host:hostport sshServer -Nf 后台运行 -L 本地转发 [bind_address] 绑定本地地址, ...
- SSH隧道技术----端口转发,socket代理
原文的原始出处不详,本文也是在复制引用了某篇转载,并做了必要的整理与编辑. 本文的受众 如果你遇到了以下问题,那么你应该阅读这篇文章 我听说过这种技术,我对它很感兴趣 我想在家里访问我在公司的机器(写 ...
- SSH隧道:端口转发功能详解
SSH系列文章: SSH基础:SSH和SSH服务 SSH转发代理:ssh-agent用法详解 SSH隧道:端口转发功能详解 1.1 ssh安全隧道(一):本地端口转发 如下图,假如host3和host ...
- 【译】SSH隧道:本地和远程端口转发
本文是:SSH Tunnel - Local and Remote Port Forwarding Explained With Examples 的译文 有两种方法可以创建SSH隧道,本地和远程端口 ...
- Linux SSH隧道技术(端口转发,socket代理)
动态转发(SOCKS5代理): 命令格式:ssh -D <local port> <SSH Server> ssh -fnND 0.0.0.0:20058 172.16.50. ...
- 流量操控之SSH隧道与端口转发
目 录 第1章 概述... 3 1.1. 实现命令... 3 1.2. SSH隧道类型... 3 第2章 SSH隧道... ...
随机推荐
- 监测IIS上网站的连接数
1.运行,输入,perfmon.msc 2.性能监视器>右侧区域>右键 添加计数器 3.在“可用计数器” 区域,选择Web Service,展开Web Service,选择Current ...
- A simple way to crack VBA password in Excel file
Unbelivibale, but I found a very simple way that really works! Do the follwoing: 1. Create a new sim ...
- pl/sql登录时,数据库下拉框没有任何内容
打开plsql时突然发现database下拉框里面没有任何配置信息,如下图: 解决方法: 找到环境变量TNS_ADMIN,修改存放tnsnames.ora的路径:
- scala 排序
sortBy() 定义: def sortBy[B](fun: (A) =>B) 栗子1: val words = "the quick brown fox jumped over t ...
- Spring JMX之二:远程访问MBean
虽然最初的JMX规范提及了通过MBean进行应用的远程管理,但是它并没有定义实际的远程 访问协议或API.因此,会由JMX供应商定义自己的JMX远程访问解决方案,但这通常又是专 有的. 为了满足以标准 ...
- Oracle GoldenGate 二、配置和使用
Oracle GoldenGate 二.配置和使用 配置和使用GoldenGate的步骤 1 在源端和目标端配置数据库支持GoldenGate 2 在源端和目标端创建和配置GoldenGate实例 3 ...
- 让UITableView的Cell都变成静态的
UITableView给我们提供了一个非常不错的展示列表的工具.内置了复用机制,其中的Cell按照一般的写法就可以实现服用,不用在Cell滚动的时候每次都创建一个新的.实现了非常好的用户体验.但是,有 ...
- (轉)CSS 单行溢出文本显示省略号...的方法(兼容IE FF)
轉自:http://www.cnblogs.com/hlz789456123/archive/2009/02/18/1392972.html html代码:<div><p>&l ...
- 论DATASNAP远程方法支持自定义对象作参数
论DATASNAP远程方法支持自定义对象作参数 DATASNAP远程方法已经可以支持自定义对象作参数,这是非常方便的功能. 1)自定义对象 type TMyInfo = class(TObject) ...
- 7.使用ZookeeperNet进行CDU操作参数详解
一.创建,删除,更新 1. zkCli.sh 中使用命令执行. 2. 学会查看api文档 zookeeper C# driver 官方文档,文档是java代码的. http://zookeeper.a ...