当前位置:首页 > 开发 > 操作系统 > 正文

通过ssh反向连接内网主机的方法

发表于: 2014-09-19   作者:2002wmj   来源:转载   浏览:
ssh
摘要: SSH反向连接的使用1、什么是反向连接?反向连接是指主机A(受控端)主动连接主机B(控制端),在主机A和主机B之间建立一个远程连接,通过这个连接主机B可以主动的向主机A发送一些请求。2、为什么需要主机A主动去连接主机B呢?这是因为主机A在局域网内,如果没有对主机A进行端口映射,对于主机B来说主机A是不可见的,如果在主机B这边向主机A发送连接请求,这个请求是不可达的。而主机B有自己独立的IP,对于主

SSH反向连接的使用

1
、什么是反向连接?
反向连接是指主机A(受控端)主动连接主机B(控制端),在主机A和主机B之间建立一个远程连接,通过这个连
接主机B可以主动的向主机A发送一些请求。

2
、为什么需要主机A主动去连接主机B呢?
这是因为主机A在局域网内,如果没有对主机A进行端口映射,对于主机B来说主机A是不可见的,如果在主机B
边向主机A发送连接请求,这个请求是不可达的。而主机B有自己独立的IP,对于主机A来说是可见的,可以直接向
主机B请求连接。

3
SSH反向连接的过程
方法就是主机A主动去连接主机B,主机B响应主机A的连接请求,它们之间就建立了一个远程连接。然后主机B
本地再创建一个本地连接,重定向到主机A和主机B刚才建立的远程连接上,之后对这个本地连接的操作都会反馈到
远程连接上去。整个过程类似于文件的DUP,这就在主机A和主机B之间建立了连接通道,此时对于主机B来说,主
A已经是可见了。

连接流程如下:
3.1
、主机A ssh客户端向主机B sshd服务端发送请求,建立远程连接。
3.2
、主机B sshd服务端创建本地连接很远程连接的映射(反向连接通道)。
3.3
、主机B ssh客户端向主机B sshd服务端的连接通道发送请求, 建立主机B ssh和主机A sshd的连接。

完成连接后,主机A对于主机B可见的形式就是存在于主机B的那个本地连接。

4
、为什么需要在主机B对远程连接映射一个本地连接?
反向连接就是CS架构,不过是受控端主动向控制端请求连接,让它们之间的连接建立。传统的CS方式是可以解决
主机A和主机B之间的连接问题,但是那样主机A和主机B的连接方式并不灵活,两者之间能做的事情,只能是CS之际
协议规定的事情。在主机B上建立了主机A的连接映射后, 对于主机B来说主机A已经不是局域网内那台不可见的主
机,主机A已经是存在主机B的一台可见主机,这样就消除了局域网和广域网的阻碍。 主机A和主机B之间建立的那
个远程连接就是主机A和主机B的通道-网线

5
SSH反向连接的使用
要建立反向连接,首先在主机A上运行:

代码: 全选

ssh -f -N -R 10000:localhost:22 lyb@3322.org

autossh -M 5678 -f -N -R 10000:localhost:22 lyb@3322.org


10000
是主机B上的本地连接端口, 22是主机B上远程连接的那个端口, lyb@3322.org是主机B的地址
连接上后,会需要输入密码。连接成功后,SSH反向连接就建立起来了。要连接到主机A,在主机B上运行:

代码: 全选

ssh lyb@localhost -p 10000

即可。

使用的过程中碰到一个问题, 就是在主机A上发起请求的时候, 需要输入密码。 如果我在家里, 不可能跑到公
司了去输入密码。于是用ssh public key的方法和写一个脚本来解决。脚本如下:

代码: 全选

#!/bin/bash 

while true;do

RET=`ps ax | grep "autossh" | grep -v "grep"`

if [ -z "$RET" ]; then

echo "restart ssh server" 

autossh -M 5678 -f -N -R 25022:localhost:22 lyb@3322.org -p 15222

fi

sleep 100

done


脚本的作用就是监控反向连接的服务, 在被异常中断的时候重启, 使用了SSH公钥后, 也不必跑到公司输入密
码了。  

通过ssh反向连接内网主机的方法

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
背景 公司为了安全起见,RDS设置只允许阿里云主机的内网端可以访问。这就意味,如果要操作RDS就需要
A:是外网服务器 ,在本例中是192.168.100.138 B:是内网机器,是反向连接的发起人 192.168.200.198 C:
1 组网拓扑 实验拓扑如上图,内部服务器有个外部域名,内部通过同一个固定公网IP上网。 需求:要实
SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定;SSH 为建立
原来虚拟机软件使用的是vmvare 可以直接使用putty用ssh协议进行连接 最近换用virtualbox结果连接不
有关ssh反向隧道的概念和用法详情可以google,这里不再细表,只是做一个实验。 设想这样一种场景:
首先安装git emerge -av git 一条命令搞定,如果你使用ubuntu redhat 有相应的yum apt-get 工具, g
1.在VirtualBox中设置网络地址转换 2.查看本地ip,使用SSH登陆,端口22
想通过SSH方式连接VirtualBox中的CentOS,才知道和VMWare的设置完全不一样,不过相比较而言设置更简
当数据库服务器在局域网的时候,我们直接通过Navicat的常规设置就可以连接、操作数据库,当数据库服
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号