关闭/断开 ssh隧道转发(ssh连接)的几种方式

  • 网络环境
  • 方法一(通过文件进行通道管理,本质上文件为socket文件)
  • 方法二(通过进程找pid杀掉进程)
  • 方法三(只在监听端口的服务器上有效,通过网络服务找pid杀掉进程)

由于工作原因,需要通过ssh隧道去实现远程操作或转发命令的效果,但当把隧道转入后台运行后,发现很难再把这个ssh连接找出来,找到大多数方法都是把进程强行匹配 kill 掉。最后看了一下国外的大神,找到一个相对优雅一点办法,分享一下

网络环境

为了让文章更容易看懂,先初定一个网络环境,用法都是一样的,这个也能在很多情况下用,不同网络环境各位自己灵活变化一下就行。

主机A和远端服务器D不能直接通信,可以通过ssh隧道的方法,把远端服务器某服务端口(比如ssh服务端口为22,数据库服务端口3306等)转发映射到转发服务器B上(比如服务器D的22端口转发到服务器B的7000端口上,主机就可以通过连接B的7000端口直接连接到D的22端口上从而实现连接),具体技术请自行搜索ssh隧道,本篇重点不在这里。

重点,ssh连接建立后放在后台运行了,如何关闭?先直接上新办法,后面有旧方法介绍(没有哪个方法比哪个方法优秀,能达到目的就是好办法)

方法一(通过文件进行通道管理,本质上文件为socket文件)

先上大佬的方法,具体命令和解析在后面


简单解析一下:

主要参数:
  <-M> master Mode的介绍具体可用man看,我怕对这个理解有误,减少误导
  <-S> 指向一个文件< path-to-socket >(这个文件名字路径和命名可以自定义,只要用户有权限就可以在连接时可以自己创建),本质上是socket文件,本意上是给其他进程用到同一个ssh连接时使用,可以使用这个对断开进行控制。

次要:不同网络环境按需添加
  <-L> or <-R> L和R分对应正向代理和反向代理。在上方网络环境中:
    通过服务器B配置转发为正向代理,用户名和用户IP指向服务器C,服务器C需开启sshd服务。
    通过服务器C配置转发为反向代理,用户名和用户IP指向服务器B,服务器B需开启sshd服务,并配置参数GatewayPorts yes已监听所有IP(不配置好像只能监听127.0.0.1)。
  <-C> 压缩传输
  <-f> 该ssh连接后台运行
  <-N> 静默连接
  <-g> 允许远程主机连接用于转发的端口

ssh -CfNg -M -S <path-to-socket> -R <监听IP(服务器B)>:<监听端口号(B)>:<最终目标IP(D)>:<最终目标端口号(D)> (另一个转发服务器)用户名@(另一个转发服务器)IP

以这种方式连接后就可以通过指定的socket文件进行断开该ssh连接:

ssh -S <path-to-socket> -O exit (转发服务器)IP

方法二(通过进程找pid杀掉进程)

这个方法最好保留创建ssh连接命令,也可以通过其他字段查找

ps -aux | grep -v "grep" | grep "<创建ssh连接的命令>" | kill `awk '{print $2}'`

举例如下:

方法三(只在监听端口的服务器上有效,通过网络服务找pid杀掉进程)

正向代理:

netstat -anp | grep 222.111.112.2:22 | awk '{print substr($7,0,length($7)-4)}' | kill `awk '{print}'`

举例如下:(可以精准找出pid)

反向代理:

netstat -anp | grep <:端口号> | awk '{print substr($7,0,length($7)-6)}' | kill `awk '{print}'`

举例如下:

关闭ssh隧道的几种“优雅”方式相关推荐

  1. 网管软件的几种主动监测方式

    网管软件能够依据管理的需要,定时向需要监测的管理对象(可以是一个设备或者一项服务)发出监测请求,并将记录返回数据作为告警和性能的依据. 具体的数据采集方式有以下几种: n 支持SNMP轮巡的数据采集, ...

  2. php retoken,laravel 5.5 关闭token的3种实现方式

    laravel 5.5 关闭token的3种实现方式 方法一: 关闭掉选中的那一行 整个项目可全部关闭token 方法二: 在middleware的verifyCsrfTkoen.php中添加函数方法 ...

  3. SSH登录的两种方式

    SSH登录的两种方式 一 : 密码登录 1.客户端向SSH服务器发出请求,服务器将自己的公钥返回给客户端. 2.客户端用服务器的公钥加密自己的登录密码,再将信息发送给服务器. 3.服务器接收到客户端传 ...

  4. ssh隧道原理及三种隧道转发模式

    ssh 是如何工作的? 在 terminal 中 ,当我们输入 ssh username@remote_host 时,terminal 程序调用 ssh client ,ssh client 发起网络 ...

  5. ssh的两种登录方式

    1. 密码登录 这是默认的一种登录方式,如图: 输入密码以后成功登录shell: 以后每次登录都得输入密码,比较麻烦. 2. 公钥登录 为了方便,ssh还提供了使用公钥的登录方式,原理为在client ...

  6. ssh 隧道 mysql_利用SSH隧道方式连接远程MySQL服务器

    1.简介: 大多数人知道SSH是用来替代R命令集,用于加密的远程登录,文件传输,甚至加密的FTP(SSH2内置),因此SSH成为使用极广的服务之一,不仅如 此,SSH还有另一项非常有用的功能,就是它的 ...

  7. ssh隧道远程mysql_利用SSH隧道方式连接远程MySQL服务器

    1.简介: 大多数人知道SSH是用来替代R命令集,用于加密的远程登录,文件传输,甚至加密的FTP(SSH2内置),因此SSH成为使用极广的服务之一,不仅如 此,SSH还有另一项非常有用的功能,就是它的 ...

  8. ssh 隧道 mysql_利用SSH隧道方式连接远程MySQL

    1.简介: 大多数人知道SSH是用来替代R命令集,用于加密的远程登录,文件传输,甚至加密的FTP(SSH2内置),因此SSH成为使用极广的服务之一,不仅如此,SSH还有另一项非常有用的功能,就是它的端 ...

  9. SSH隧道本地转发远程转发

    参考了:https://baijiahao.baidu.com/s?id=1716487922632955537&wfr=spider&for=pc 由于经常用到,找的麻烦,碰巧看到这 ...

最新文章

  1. TiP:湖大于峰组综述​病原体分泌的宿主模拟物在植物病害发展中的新作用!...
  2. LeetCode-笔记-57.插入区间
  3. SHELL脚本 基础一
  4. 汇编语言随笔(2)-CPU指令周期和无条件转移指令(包括call和ret指令)
  5. MyEclipse2017:MyEclipse2017软件破解图文教程(解决MyEclipse软件因试用期过期而无法再次使用的问题)
  6. Matlab小波包分解后如何求各频带信号的能量值?
  7. 认证服务器的搭建_OAuth2.0分布式系统环境搭建
  8. 以GIS面对崛起的城市群
  9. linux truncate文件,linux系统编程:用truncate调整文件大小
  10. IndexedDB:浏览器里内置的数据库
  11. 直流电机调速c语言程序,分享一个51单片机直流电机调速源程序
  12. weblogic系列漏洞整理 -- 1. weblogic安装
  13. 滑动门套滑动门css,CSS选项卡、滑动门代码
  14. matlab 系统 h10,Thinkbook、ThinkPad出厂带H10混合固态的机器重装系统启用傲腾的方法...
  15. php做一个每天的考勤表,教你做一个酷毙的考勤表!|
  16. win7从光盘进入修复计算机,win7光盘修复系统步骤
  17. python 仪表盘 ppt_python仪表盘
  18. Charles软件怎样解决SSL安全证书过期问题
  19. 刀具半径补偿 c语言,C语言程序实现数控加工刀具半径补偿原理与坐标计算.pdf...
  20. 2021年12月西电大二Python期末小总结

热门文章

  1. 2007年国内主流CMS系统及演示站点
  2. R COOKBOOK 学习笔记
  3. 为什么要升级BIOS呢?(1)
  4. 人工神经网络的结构基本上分为两类
  5. c语言函数大全 pdf,C语言标准库函数大全.pdf
  6. 我国第一部纯国产超级计算机,纯国产超级计算机获得世界冠军
  7. Chrome浏览器自带翻译功能不能使用了?看我的解决方法
  8. 目标框检测中准确率、召回率、AP、mAP计算原理及代码
  9. Linux修复文件系统
  10. 密码学应用-身份认证+数字证书