关闭ssh隧道的几种“优雅”方式
关闭/断开 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隧道的几种“优雅”方式相关推荐
- 网管软件的几种主动监测方式
网管软件能够依据管理的需要,定时向需要监测的管理对象(可以是一个设备或者一项服务)发出监测请求,并将记录返回数据作为告警和性能的依据. 具体的数据采集方式有以下几种: n 支持SNMP轮巡的数据采集, ...
- php retoken,laravel 5.5 关闭token的3种实现方式
laravel 5.5 关闭token的3种实现方式 方法一: 关闭掉选中的那一行 整个项目可全部关闭token 方法二: 在middleware的verifyCsrfTkoen.php中添加函数方法 ...
- SSH登录的两种方式
SSH登录的两种方式 一 : 密码登录 1.客户端向SSH服务器发出请求,服务器将自己的公钥返回给客户端. 2.客户端用服务器的公钥加密自己的登录密码,再将信息发送给服务器. 3.服务器接收到客户端传 ...
- ssh隧道原理及三种隧道转发模式
ssh 是如何工作的? 在 terminal 中 ,当我们输入 ssh username@remote_host 时,terminal 程序调用 ssh client ,ssh client 发起网络 ...
- ssh的两种登录方式
1. 密码登录 这是默认的一种登录方式,如图: 输入密码以后成功登录shell: 以后每次登录都得输入密码,比较麻烦. 2. 公钥登录 为了方便,ssh还提供了使用公钥的登录方式,原理为在client ...
- ssh 隧道 mysql_利用SSH隧道方式连接远程MySQL服务器
1.简介: 大多数人知道SSH是用来替代R命令集,用于加密的远程登录,文件传输,甚至加密的FTP(SSH2内置),因此SSH成为使用极广的服务之一,不仅如 此,SSH还有另一项非常有用的功能,就是它的 ...
- ssh隧道远程mysql_利用SSH隧道方式连接远程MySQL服务器
1.简介: 大多数人知道SSH是用来替代R命令集,用于加密的远程登录,文件传输,甚至加密的FTP(SSH2内置),因此SSH成为使用极广的服务之一,不仅如 此,SSH还有另一项非常有用的功能,就是它的 ...
- ssh 隧道 mysql_利用SSH隧道方式连接远程MySQL
1.简介: 大多数人知道SSH是用来替代R命令集,用于加密的远程登录,文件传输,甚至加密的FTP(SSH2内置),因此SSH成为使用极广的服务之一,不仅如此,SSH还有另一项非常有用的功能,就是它的端 ...
- SSH隧道本地转发远程转发
参考了:https://baijiahao.baidu.com/s?id=1716487922632955537&wfr=spider&for=pc 由于经常用到,找的麻烦,碰巧看到这 ...
最新文章
- TiP:湖大于峰组综述​病原体分泌的宿主模拟物在植物病害发展中的新作用!...
- LeetCode-笔记-57.插入区间
- SHELL脚本 基础一
- 汇编语言随笔(2)-CPU指令周期和无条件转移指令(包括call和ret指令)
- MyEclipse2017:MyEclipse2017软件破解图文教程(解决MyEclipse软件因试用期过期而无法再次使用的问题)
- Matlab小波包分解后如何求各频带信号的能量值?
- 认证服务器的搭建_OAuth2.0分布式系统环境搭建
- 以GIS面对崛起的城市群
- linux truncate文件,linux系统编程:用truncate调整文件大小
- IndexedDB:浏览器里内置的数据库
- 直流电机调速c语言程序,分享一个51单片机直流电机调速源程序
- weblogic系列漏洞整理 -- 1. weblogic安装
- 滑动门套滑动门css,CSS选项卡、滑动门代码
- matlab 系统 h10,Thinkbook、ThinkPad出厂带H10混合固态的机器重装系统启用傲腾的方法...
- php做一个每天的考勤表,教你做一个酷毙的考勤表!|
- win7从光盘进入修复计算机,win7光盘修复系统步骤
- python 仪表盘 ppt_python仪表盘
- Charles软件怎样解决SSL安全证书过期问题
- 刀具半径补偿 c语言,C语言程序实现数控加工刀具半径补偿原理与坐标计算.pdf...
- 2021年12月西电大二Python期末小总结