当前位置: 首页 > news >正文

ssh反向连接

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


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 "ssh -f -N -R 10000:localhost:22" | grep -v "grep"`
if [ "$RET" = "" ]; then
echo "restart ssh server"
ssh -f -N -R 10000:localhost:22 lyb@hahalee.3322.org
fi
sleep 10
done


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


转自:http://gaga1.blogbus.com/logs/88830985.html

相关文章:

  • PHP通用防注入安全代码
  • ASP木马Webshell安全解决办案
  • UBUNTU 安装PHP+MYSQL+NGINX
  • 系统密码难以获取时采取的方法
  • 大仙们的经典入侵经验摘录~
  • 内网渗透方法总结
  • 构造注入点后门代码(asp,aspx,php)
  • 浅谈web漏洞挖掘—特殊变量fuzz
  • IDS/IPS/WAF压力测试工具Inundator v0.5
  • MSSQL MYSQL ORACLE一些常用的命令
  • HTTP 头部解释
  • Safe3 WEB应用防火墙 linux硬件版
  • Hacking Oracle 之光标注射
  • 传说中的自动处理IIS权限的批处理文件
  • 用PHP写的简单登陆首页
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 10个确保微服务与容器安全的最佳实践
  • dva中组件的懒加载
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • JAVA并发编程--1.基础概念
  • RxJS: 简单入门
  • SQLServer之索引简介
  • 阿里云购买磁盘后挂载
  • 程序员最讨厌的9句话,你可有补充?
  • 分类模型——Logistics Regression
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 警报:线上事故之CountDownLatch的威力
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 深度解析利用ES6进行Promise封装总结
  • 跳前端坑前,先看看这个!!
  • 学习HTTP相关知识笔记
  • 运行时添加log4j2的appender
  • Linux权限管理(week1_day5)--技术流ken
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​什么是bug?bug的源头在哪里?
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (HAL库版)freeRTOS移植STMF103
  • (二开)Flink 修改源码拓展 SQL 语法
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting
  • .net 提取注释生成API文档 帮助文档
  • /etc/fstab 只读无法修改的解决办法
  • @property括号内属性讲解
  • @select 怎么写存储过程_你知道select语句和update语句分别是怎么执行的吗?
  • [ 手记 ] 关于tomcat开机启动设置问题
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择
  • [28期] lamp兄弟连28期学员手册,请大家务必看一下
  • [Asp.net MVC]Bundle合并,压缩js、css文件
  • [C++] sqlite3_get_table 的使用
  • [CareerCup] 6.1 Find Heavy Bottle 寻找重瓶子
  • [CSS] - 修正IE6不支持position:fixed的bug
  • [hdu2196]Computer树的直径
  • [HDU3710]Battle over Cities