linux通过ssh实现反向连接
1.问题描述:
有时,我们会想在局域网外访问局域网内的机器。这时,我们可以使用SSH的反向连接来实现。
设备A:位于局域网内,可以访问代理服务器B。 假设该设备IP:A.A.A.A,用户名userA
设备B:位于局域网外,作为访问设备A的代理服务器,不可访问A。假设该设备IP:B.B.B.B,用户名userB
设备C:想要访问A的设备,可以访问B,无法直接访问A。假设该设备IP:C.C.C.C,用户名userC
2.目标:设备C可以通过SSH访问局域网内设备C
3.条件:
三台设备都需要包含SSH客户端,A,B设备需要包含SSH服务端。
4.实现步骤:
4.1.在A设备上建立A设备到B设备的反向代理:
ssh -fCNR <port_b1>:localhost:22 userB@B.B.B.B
例如:ssh -fCNR 10000:localhost:22 userB@B.B.B.B (此时B设备上已经可以通过ssh -p 10000 userA@localhost连接到设备A)
<port_b1>:建立在B机器上,用来代理设备A机器22端口的端口。
userB@B.B.B.B :B机器的用户名和IP地址。
4.2.在B设备上建立B设备到A设备的正向代理:(这样做的目的是为了实现和外网的通信)
ssh -fCNL *:<port_b2>:localhost:<port_b1> userB@localhost
例如:ssh -fCNL *:10001:localhost:10000 userB@localhost
<port_b2>:用作本地转发的端口,用来和外网通信,并将数据转发到<port_b1>,实现从其他机器可以访问。
*代表可以接受来自任意机器的访问。
4.3.现在C机器上可以通过B机器SSH到A机器
ssh -p<port_b2> userA@B.B.B.B
5.注意事项
5.1.参数介绍
-f 后台运行-C 允许压缩数据-N 不执行任何命令-R 将端口绑定到远程服务器,反向代理-L 将端口绑定到本地客户端,正向代理
5.2.自动连接和防断线脚本
如果你想让连接长期保持,可以写个脚本来保证因为网络原因断线的话可以自动重连。
先说Windows平台,用plink -pw参数可以指定密码,所以只要写个批处理:
:1
plink -pw “password” -D 7070 user@serverip
goto 1
这样应该就可以解决大多数问题造成的断线。
Linux平台ssh默认不支持把密码作为参数,不过有sshpass可以搞定
http://sourceforge.net/projects/sshpass/files/latest/download
下载,解压,编译,把可执行文件拷贝到合适的目录,执行命令格式如下:
sshpass -p "password" ssh -D <port> user@serverip
貌似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 user@ServerIP &
fi
sleep 300
done
执行这个脚本就可以了。sleep 300代表300秒查看一次,可以根据需要调整。
5.3.如果设备A重新启动了,则只需要重新配置设备A即可。
linux通过ssh实现反向连接相关推荐
- linux自动断开会话,linux – 从SSH会话断开连接是否会导致程序崩溃?
编辑2016年: 这个Q& A早于systemd v230 debacle.从systemd v230开始,新的默认设置是终止终止登录会话的所有子节点,无论采取了哪些历史上有效的预防措施来防止 ...
- 使用ssh正向连接、反向连接、做socks代理的方法
文章出处:http://dzmailbox.blog.163.com/blog/static/120534385201232642637847/ 最近才发现ssh有多么的强大! 在网上搜了半天,发现大 ...
- 用ssh反向连接访问内网主机 ( 实例使用autossh隧道实现mysql的同步 )
一.准备知识 什么是autossh? 假设有两台主机: A主机为外网,B主机为内网 通常来说外网主机A是无法直接连接到内网主机B的,这时如果要实现A主机通过ssh控制B主机,通常来说有 两种方法: 1 ...
- linux内核开启ssh,linux开启ssh服务
本文概略:1)ubuntu发行版开启ssh.2)centos发行版开启ssh 1.ubuntu发行版安装/开启ssh服务 1.1 安装ssh服务端 sudo apt-get install opens ...
- SSH反向连接及Autossh
SSH反向连接及Autossh http://www.cnblogs.com/eshizhan/archive/2012/07/16/2592902.html SSH反向连接及Autossh 0.接触 ...
- [转]SSH反向连接及Autossh
http://www.cnblogs.com/eshizhan/archive/2012/07/16/2592902.html SSH反向连接及Autossh 0.接触Linux恐怕对SSH再熟悉不过 ...
- CentOS/Linux 解决 SSH 连接慢
现在连接linux服务器一般都是使用SSH远程连接的方式.最近新装了一台服务器,发现telnet时速度很快,ping时一切也正常,但SSH连接的时候却很慢.经过网上资料查询,大致是有以下几种原因: 1 ...
- Linux之SSH性能调优,防止连接等待时间过长,连接速度飞起
SSH服务: 干货:我的虚拟机情况,改完之后 连接速度飞起 修改相应配置: vim /etc/ssh/sshd_conf UseDNS no GSSAPIAuthentication no 保存退出 ...
- linux ssh服务,Linux配置SSH服务以便实现远程连接
Linux用户们一定想要知道该怎么开启SSH服务吧,SSH服务是Linux系统远程连接的重要方式,所以如何配置SHH服务也让很多用户感到纠结.现在小编就帮大家解决这个问题. 配置方法: 查询\安装SS ...
最新文章
- 六周第三次课 9.6/9.7 awk
- Worktile 技术架构概要
- vba sub是什么缩写_这些掌握了,你才敢说自己懂VBA
- Python面试题(二)
- 炸锅了!Google称2029年人类开始实现永生不死!疾病,衰老,痛苦将彻底消失!?
- 【pl/sql番外篇】 存储过程 游标
- Orchard商城模块(Commerce)设计与后台部分
- 多线程处理同一批数据_C#中多线程的那点事-多线程的代价
- C#数据库类(zz)
- #pragma pack与sizeof union
- ASP.NET编程的十大技巧
- 惠普m128fn中文说明书_hp m125m126m127m128使用说明.pdf
- 推荐一个图片在线生成链接的网站
- cpu型号怎么看服务器,看不懂CPU?学会看CPU只要五分钟
- 联合概率 条件概率 边缘概率之间关系
- 微信与qq怎么连接到服务器,王者荣耀微信和qq可以一起玩吗 王者荣耀微信和qq互通吗说明...
- CVPR2020/2021行人检测重识别等论文,共33篇
- 做个表白页面需要掌握哪些英语单词?
- python调用jsonrpc接口_微信小程序通过jsonrpc调用python服务端接口
- VirtualBox安装CentOS7虚拟机(超级无敌详细)