SSH反向连接及Autossh

 

转自: http://www.cnblogs.com/eshizhan/archive/2012/07/16/2592902.html

 

0.接触Linux恐怕对SSH再熟悉不过了,还有scp,sftp各种方便的功能,一般的使用都需要ip:port(如果不是默认22的话),但有些情况比较特殊,就是想连接一台内网主机(比如公司内网,当然你肯定做不了Port Forwarding,除非你想在公司防火墙上拆个洞)。稍懂一点网络的童鞋会明白,Internet上去主动连接一台内网是不可能的,一般的解决方案分两种,一种是端口映射(Port Forwarding),将内网主机的某个端口Open出防火墙,相当于两个外网主机通信;另一种是内网主机主动连接到外网主机,又被称作反向连接(Reverse Connection),这样NAT路由/防火墙就会在内网主机和外网主机之间建立映射,自然可以相互通信了。但是,这种映射是NAT路由自动维持的,不会持续下去,如果连接断开或者网络不稳定都会导致通信失败,这时内网主机需要再次主动连接到外网主机,建立连接。

 

1.理论的介绍完了,下面实际操作:

A要控制B

A主机:外网,ip:123.123.123.123,sshd端口:2221

B主机:内网,sshd端口:2223

无论是外网主机A,还是内网主机B都需要跑ssh daemon

 

1.1.首先在B上执行

$ ssh -NfR 1234:localhost:2223 user1@123.123.123.123 -p2221

这句话的意思是将A主机的1234端口和B主机的2223端口绑定,相当于远程端口映射(Remote Port Forwarding)。

这里每次需要输入A主机user1的登陆密码,后面会讲到解决办法。

 

1.2.这时在A主机上sshd会listen本地1234端口

$ ss -ant
State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 127.0.0.1:1234 *:*

1.3.像平时一样连接到A主机的1234端口就可以控制内网B主机了

$ ssh localhost -p1234

 

2.一开始提到,这种反向连接(Reverse Connection)不稳定,可能随时断开,需要内网主机B再次向外网A发起连接,这时需要个“朋友”帮你在内网B主机执行这条命令。它就是Autossh。

在此之前还要解决之前的一个问题,那就是每次内网主机B连接外网主机A时都需要输入密码,这个问题ssh本身是提供另外一种验证方式——通过密钥验证用户身份,实现自动登录。

 

2.1.在内网B主机上生产公钥和私钥

$ ssh-keygen
...(一直按Enter,最后在~/.ssh/下生成密钥)
$ ls ~/.ssh/
id_rsa id_rsa.pub known_hosts

 

2.2.复制B主机上生成的id_rsa.pub公钥到外网A主机上,并将内容加入到~/.ssh/authorized_keys中

$ cat id_rsa.pub >> ~/.ssh/authorized_keys

试下,内网B主机连接外网A主机,就不再输入密码验证了

补充:今天了解到ssh-copy-id这个命令,上面这个操作就变的简单了

$ ssh-copy-id user1@123.123.123.123

 

2.3.再来看看Autossh的用法

$ autossh -M 5678 -NR 1234:localhost:2223 user1@123.123.123.123 -p2221

比之前的命令添加的一个-M 5678参数,负责通过5678端口监视连接状态,连接有问题时就会自动重连,去掉了一个-f参数,因为autossh本身就会在background运行。

 

3.终极方案:当重启内网B主机,谁来自动Autossh呢,加入daemon吧

以daemon方式执行,相当于root去执行autossh, ssh,这时刚才普通用户目录下的.ssh/authorized_keys文件会不起效。有两种办法解决,一种是用autossh的参数指定.ssh路径;另外一种是以普通用户身份执行daemon,下面是第二种方式。

/bin/su -c '/usr/bin/autossh -M 5678 -NR 1234:localhost:2223 user1@123.123.123.123 -p2221' - user1

autossh还有很多参数,用来设置重连间隔等等。

将上面命令放入下面各启动方式中,根据自己系统自己配置:

SysV:/etc/inid.d/autossh

Upstart: /etc/init/autossh.conf

systemd: /usr/lib/systemd/system/autossh.service

 

 

P.S.

1.家里是ADSL的话,用DDNS,解决ip问题

2.外网有路由的可设下端口映射

3.虽然有密钥和密码保护,但还请小心使用

转载于:https://www.cnblogs.com/itech/p/4572275.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/492141.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

硬核干货|揭示波士顿动力机器人背后的专利技术(上)

来源:超凡知识产权,机器人大讲堂整理发布摘要:如果说在腿足机器人领域里,有一个让人闻之色变的变态企业,那就非波士顿动力莫属了。深耕几十年的技术积累加上“不谙世事”的科研态度,使得BD一直保持在腿足机…

(Python+Tensorflow)编程踩坑集锦

(PythonTensorflow)编程踩坑集锦 1 开发环境安装 推荐视频:https://www.icourse163.org/learn/PKU-1002536002?tid1452937471#/learn/content?typedetail&id1229556595&cid1246770451&replaytrue 1.1 Tensorflow2安装过程(Win10平台&am…

浮动在IE6,7下的一些问题

1、首先如果两个元素要并在同一行,使用float最好两个都加浮动 2、IE6下双边距问题,当有块级元素浮动的时候,该元素的横向margin值会被放大为两倍,解决办法:给该元素加display:inline即可。 3、li的一些问题…

复盘亚马逊从优秀到卓越的24年

来源:方证证券4月18日,据报道,亚马逊公司计划在今年7月中旬关闭其在中国的本土电商业务,将业务重点转移至更有盈利空间的海外购和云服务上。对此,亚马逊方面4月18日回应澎湃新闻记者称,“明确的是&#xff…

Python time datetime常用时间处理方法

常用时间转换及处理函数: import datetime # 获取当前时间 d1 datetime.datetime.now() print d1 # 当前时间加上半小时 d2 d1 datetime.timedelta(hours0.5) print d2 # 格式化字符串输出 d3 d2.strftime(%Y-%m-%d %H:%M:%S) print d3 # 将字符串转化为时间类型…

深度!移动机器人(AGV)产业链全分析

来源:广证恒生、乐晴智库精选产业链:下游需要求旺盛带动下游产业链发展 移动机器人(AGV)是工业机器人的一种。它由计算机控制,具有移动、自动导航、多传感器控制、网络交互等功能,在实际生产中最主要的用途是搬运,可以…

404页面自动跳转javascript

5秒后自动跳到系统<a href"login.aspx">登录界面</a>...还剩<span id"time" style"font-weight:bold;color: blue">5</span>秒&#xff01; <script type"text/javascript"> var i 5; …

英国前首相:为什么欧洲没有诞生互联网巨头?

David William Donald Cameron&#xff08;戴维威廉唐纳德卡梅伦&#xff09;见面会现场来源&#xff1a;世界科技创新论坛英国当地时间2019年4月12日&#xff0c;世界科技创新论坛伦敦峰会成功举行&#xff0c;本次峰会特别邀请了出身牛津大学、英国近两百年历史上最年轻的首相…

IIS解决 上传文件大小限制

目的&#xff1a;通过配置文件和IIS来解决服务器对上传文件大小的限制 1&#xff1a;修改配置文件&#xff08;默认为4M 值的大小根据自己情况进行修改&#xff09; <httpRuntime maxRequestLength"2048000" /> 2&#xff1a;修改IIS配置 打开C:\Windows\Syst…

-Block和JSON

【Block】 【认识Block】 block就是代码块&#xff0c;可以理解为没有名字的函数(匿名函数)。 使用形式类似于前面学习的函数指针&#xff0c;只需将‘*’改为‘^’ 【使用说明】 1、使用typedef 2、作为参数传递 3、block的拷贝 4、字符串排序 5、使用局…

脑内世界模型:脑科学基础上的意识问题哲学解说

来源&#xff1a;《华侨大学学报》哲学社会科学版2018年第5期作者&#xff1a;方圆&#xff08;中国科学院大学人文学院博士后研究人员&#xff09;本文旨在以当今时代脑科学研究结论为基础&#xff0c;在哲学层面回答“意识是什么”这一问题&#xff0c;并试图给出一种在科学与…

直击5G的机遇与挑战,全新商业模式、规模化经济效益、最新技术进展…全解读...

来源&#xff1a;TechRepublic、物联网智库编译摘要&#xff1a;报告指出&#xff0c;5G将改善用户体验&#xff0c;带来新的应用以及新的商业模式&#xff0c;产生显著的经济效益&#xff0c;但同时&#xff0c;5G的发展也面临着许多不可避免的挑战。毫无疑问&#xff0c;5G是…

JQUERY AJAX无刷新异步上传文件

AJAX无刷新上传文件并显示 http://blog.csdn.net/gao3705512/article/details/9330637?utm_sourcetuicool jQuery Form Plugin 官网地址:http://malsup.com/jquery/form/#tab7 基于MVC4EasyUI的Web开发框架形成之旅--附件上传组件uploadify的使用 http://www.cnblogs.com/wuh…

simulink仿真学习(实现半波整流、方波输出) day1

** simulink仿真学习常用模块及具体案例实现&#xff08;第一天&#xff09; ** simulink简介 Simulink是美国Mathworks公司推出的MATLAB中的一种可视化仿真工具。Simulink是一个模块图环境&#xff0c;用于多域仿真以及基于模型的设计。它支持系统设计、仿真、自动代码生成…

深度报告解密华为汽车业务!布局三大领域,对标世界级Tier1

来源&#xff1a;智东西摘要&#xff1a;华为进军汽车电子领域&#xff0c;定位世界级Tier1供应商。汽车电子产业链 Tier1 系统集成厂商目前处于国际寡头垄断的市场格局&#xff0c;全球前十大汽车电子供应商拥有 70%市场占有率。即使国内市场也被博世、大陆、电装等国际 Tier1…

simulink仿真学习(关系运算及逻辑模块、离散时间积分模块)day2

1.关系运算模块&#xff08;应用实例&#xff09; 关系运算分为单目运算和双目运算&#xff0c;单目运算左侧输入为一个变量&#xff0c;双目运算左侧输入为两个变量。输出可能逻辑真或逻辑假。其中&#xff0c;逻辑真为1&#xff0c;逻辑假为0。 下图为双目关系运算的逻辑关…

《大道至简》2

团队缺乏的不只是管理。做管理起码要能承担责任&#xff0c;这是最基本的素质。谁都害怕承担责任&#xff0c;我也是&#xff01;我能否习惯敢于承担责任呢&#xff1f;能否习惯敢于承诺呢&#xff1f;承诺后我估计还有可能完成&#xff0c;不承诺&#xff0c;基本上没有完成的…

保研之旅(中科院空天院、武汉大学、华南理工大学、 北京理工大学、中科院国家空间科学中心)

保研之旅&#xff08;总结过往&#xff0c;启程未来&#xff09;目录个人背景5月 中科院空天信息创新研究院信息方向7月 武汉大学测绘遥感信息工程国家重点实验室7月 北京理工大学雷抗所7月 华南理工大学电子信息学院7月中科院国家空间科学中心往年去向最后结语目录 个人背景 …

这5家纳米技术公司正在推动医疗检测的变革

来源&#xff1a;资本实验室纳米技术自发明已来&#xff0c;已经在多个领域得到应用。特别是在医疗领域&#xff0c;纳米医学已经成为现代医疗的一个重要发展方向。目前&#xff0c;纳米技术已经成功地用于各种疾病的检测与治疗&#xff0c;美国FDA也已经批准了超过60种含有纳米…

人月神话阅读笔记之三

就目前情况而言&#xff0c;还不错。然而&#xff0c;现在所面临的问题是如何完成5000人年的项目&#xff0c;而不是20或30人年规模的系统。如果整个工作能控制在范围之内&#xff0c;10人的团队无论如何组织&#xff0c;总是比较高效的。但是&#xff0c;当我们需要面对几百人…