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从外网访问内网主机的方法,文中介绍的非常详细,对大家具有一定的参考价值,需要的朋友们下来要起看看吧。
通过SSH的反向链接,可以随时通过外网服务器访问内部PC。 可以服务方式在window登录前自动运行。具有链接超时检测、错误重试、密钥鉴权等功能,还是很稳定的。 专业用户使用,需要用实际的参数和文件替换。不懂...
ssh远程连接其他主机并执行命令,只能执行少量命令。也可自行优化改进
做深度学习的同学都知道,显卡资源还是比较昂贵的...这时,VSCode+SSH就可以在一定程度上解决这个问题。 总的来说,本文档手把手教你如何脱离向日葵、TeamViewer等远程软件,实现多人分别在自己的电脑上同时控制主机。
通过gateone的安装实现的web端的ssh远程连接linux技术
下载paramiko 首先,我的windows系统上有python2和python3。使用下面命令切换到python3: activate py3 接着使用下面命令下载相关模块: pip install ecdsa pip install Crypto ...ssh = paramiko.SSHClient
ssh整合连接池是自己总结的常用的连接池使用方法,给初学者一个帮助,希望有用
ssh工具 用于连接远程服务器 linux 系统 解压 安装即可使用
SSH与frp内网穿透.pdf
好用的一款linux远程连接软件bitvise-ssh-client,支持保存连接信息共享.
通过使用SSH,你可以把所有传输的数据进行加密,这样网络传输中间的攻击方式就不可实现了, 而且也能够防止DNS和IP欺骗?另外,传输的数据是经过压缩的,可以加快传输的速度。 SSH有很多功能,它既可以代替telnet,又可以为...
如何远程连接主机,使用ssh可以方便的实现
ssh连接慢解决办法(成功) 用真机连接虚拟机卡的话: 1.进入虚拟机vim /etc/ssh/sshd_config 2.将 #UseDNS yes改为UseDNS no即可如下: 使用/UseDNS找到地方然后添加 #UseDNS yes UseDNS no #PidFile /var/run/sshd....
ssh-信任主机方式,建立crt连接 实现从主机A直接 SSH 到主机B,C,无需密码 在LINUX配置主机信任时,对对端机(被免口令登录机器)的目录权限和文件权限相关说明:对端机的authorized_keys改为只有当前用户读取权限...
自己整理好的ssh连接池技术 并带有资料 很多种配置方式 这里我主要弄的是proxool方式 也是非常好用 经常用的一种 带有步骤 按上面配置就可以成功使用 带有所需jar包
Jmeter解决SSH连接数据库
linux下ssh安全连接,使用密钥来验证,可以不需要密码来登录
windows下C语言实现的通过ssh2连接设备sftp传文件并执行 1.所有设备的IP地址保存在本地文件TXT中 2.取IP做成一个链表 3。取结点 4.创建容量为100的线程池,ssh2连接设备,sftp传输文件并执行 5.返回结果写入本地文件...
redis可视化工具,亲测可用,整理了一些各个系统的安装包,支持ssh远程连接
java实现ssh方式连接linux(包含ganymed-ssh2-build210.jar包) ---------Java语言+绚丽的界面+仿ssh实现调用Linux的Terminal,实现远程连接linux进行命令行的操作!