首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

无法在脚本退出时完全关闭远程SSH通道

在脚本退出时无法完全关闭远程SSH通道是因为SSH连接是基于客户端和服务器之间的网络连接,当脚本退出时,客户端和服务器之间的网络连接并不会自动关闭。这可能会导致一些问题,比如资源浪费、安全风险等。

为了解决这个问题,可以采取以下几种方法:

  1. 使用SSH的ControlMaster功能:SSH的ControlMaster功能允许在一个SSH会话中打开多个连接,其中一个连接作为主连接,其他连接作为从连接。当主连接关闭时,从连接也会自动关闭。可以在SSH配置文件中设置ControlMaster为auto,并指定ControlPath来保存主连接的信息。这样,在脚本中可以使用ControlPersist选项来保持主连接的持久性,直到脚本执行完毕。
  2. 使用nohup命令:nohup命令可以在脚本退出后继续运行命令,而不受脚本退出的影响。可以在脚本中使用nohup命令来启动SSH连接,并将输出重定向到一个日志文件中。这样,即使脚本退出,SSH连接仍然会继续运行。
  3. 使用SSH的ControlPersist选项:SSH的ControlPersist选项可以设置SSH连接的持久性,即在连接关闭后保持连接的状态一段时间。可以在脚本中使用ControlPersist选项来设置SSH连接的持久性,以确保连接在脚本退出后仍然保持活动状态。
  4. 使用SSH的BatchMode选项:SSH的BatchMode选项可以禁用交互式认证,从而在脚本中使用SSH连接时不会出现认证提示。可以在脚本中使用BatchMode选项来禁用交互式认证,以确保连接在脚本退出后能够正常关闭。

总结起来,为了在脚本退出时完全关闭远程SSH通道,可以使用SSH的ControlMaster功能、nohup命令、ControlPersist选项或BatchMode选项来保持连接的持久性或禁用交互式认证。这样可以确保SSH连接在脚本退出后能够正常关闭,避免资源浪费和安全风险。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

通过python 执行 nohup 不生效的解决

通过paramiko模块ssh登录linux,然后用exec_command方法执行带有nohup的shell命令不生效,python脚本如下: import paramiko import time...', 22, 'root', '123456') ssh.exec_command('nohup ping localhost & \n') time.sleep(1) 脚本执行完之后ping进程并没有继续运行...,这可能是因为exec_command执行完之后立刻关闭通道的原因,换用invoke_shell可以正常运行: import paramiko import time ssh = paramiko.SSHClient...补充知识:paramiko远程服务器nohup阻塞问题 一、需求描述: 需要来回切换多台服务器(脚本命令不太熟),就用了python的paramiko模块进行远程连接服务器,控制程序的停止和启动。...,但是遇到会阻塞的任务,就无法生效,找了很多方法,最后发现这个比较有效。

3.3K10
  • Django3+websocket+paramiko实现web页面实时输出

    HTTP请求,它告诉通道运行什么代码。...无法枚举特定组中的通道。 每个使用者实例都有一个自动生成的唯一通道名,因此可以通过通道层进行通信。 这里为了方便部署,直接使用内存作为后备存储的通道层。有条件的话,可以使用redis存储。...但是,异步使用者可以提供更高级别的性能,因为他们处理请求不需要创建其他线程。 这里使用同步消费,因为我测试异步消费时,web页面并不能实时展示结果。只能使用同步模式才行。...退出循环                     if not nextline:                         break                 ssh.close()  ...print("后端关闭websocket连接") 注意:修改里面的服务器,用户名,密码,脚本名称。

    3.4K42

    使用WeeChat进行Internet中继聊天

    退出WeeChat 要完全退出WeeChat,请运行: /quit 配置WeeChat 您通常不必直接编辑任何WeeChat配置文件。大多数配置都是通过WeeChat命令完成的。...WeeChat版本0.3.9及更高版本中,包括脚本管理系统。/script将打开可用和已安装脚本的列表。...从那里,您可以按照说明以交互方式安装脚本,或使用/script install脚本名称安装脚本。 WeeChat命令 所有WeeChat命令都以/开头。WeeChat中的每个通道都是缓冲区。...命令 描述 /help 列出命令,如果给出命令,则显示命令用法和描述 /join 加入频道 /close 关闭缓冲区,如果您在其中,则将通道分开 /quit 退出WeeChat /msg 发送消息给昵称...您可以告诉WeeChat连接到服务器使用irc.server.name.autojoin替换您所连接的服务器的设置自动连接到某些通道name。在上面的配置中,我们连接到oftc。

    6.4K30

    SSH 隧道与转发内网穿透(转载)

    ,因此IP是127.0.0.1) 需要让远程机器能访问的内部机器的端口号(端口:22) 清楚了上面的参数后,我们使用下面的命令来建立一个远程SSH隧道 $ ssh -N -f -R 2222:127.0.0.1...SSH 客户端的 TCPKeepAlive 选项可以避免这个问题的发生,默认情况下它是被开启的。如果它被关闭了,可以 ssh 的命令上加上 -o TCPKeepAlive=yes 来开启。...如果服务器 ServerAliveCountMax 次请求后都没能响应,那么 SSH 客户端就自动断开连接并退出,将控制权交给你的监控程序。...这两个选项的设置方法分别是 ssh 加入 -o ServerAliveInterval=n 和 -o ServerAliveCountMax=m。...如果被关闭的话,可以 /etc/sshd_config 中修改 GatewayPorts no 为 GatewayPorts yes 来打开它。

    4.2K50

    用Python远程登陆服务器的最佳实践

    来源 | Python编程时光(ID: Cool-Python) 使用 Python 写一些脚本的时候,某些情况下,我们需要频繁登陆远程服务去执行一次命令,并返回一些结果。...(my_server.ls()) # 可在 sleep 期间,手动登陆服务器,使用 top ,查看当前有多少终端连接 time.sleep(5) # 再次执行这条命令,登陆终端数将 +1,执行完后...然后你可以参考如下这段代码, Linux/OSX 系统下进行远程连接 import paramiko ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机...、执行命令、关闭的一个操作,多个操作需要连接多次,无法复用连接[痛点四]。...().decode()) # 关闭连接 trans.close() 以上四种方法,可以帮助你实现远程登陆服务器执行命令,如果需要复用连接:一次连接执行多次命令,可以使用 方法二 和 方法四。

    2.9K20

    利用SSH隧道技术穿越内网访问远程设备

    每当一个连接建立于本地端口或本地套接字,此连接就会通过安全通道进行转发。 也可在配置文件中设置端口转发功能。只有超级用户可以转发特权端口。...每当连接到此端口,连接都通过安全通道进行转发,然后使用应用程序协议确定将远程计算机连接到何处。目前支持 SOCKS4 和 SOCKS5 协议,ssh 将充当 SOCKS 服务器。...如果是 C 代码中执行登录命令,进程在后台自动运行,是无法和用户进行交互的。为了避免交互动作,应该禁止 ssh 发出 y/n 的询问。...2) 用 expect 调用 shell 脚本,向 shell 脚本发送密码。这种方式是模拟键盘输入。 3) 如果是 openssh,则用 sshpass 向 ssh 命令行传递密码。...关闭 ssh 隧道既可在代理机 A 上进行(关闭相应的 sshd 进程),也可在目标机 T 上进行(关闭相应的 ssh 进程) 4. 每次只能访问一台目标机。

    3.4K30

    python使用paramiko实现ssh的功能详解

    paramiko模块提供了ssh及sft进行远程登录服务器执行命令和上传下载文件的功能。...transport 方式登录 方法1是传统的连接服务器、执行命令、关闭的一个操作,有时候需要登录上服务器执行多个操作,比如执行命令、上传/下载文件,方法1则无法实现,可以通过如下方式来操作 # 实例化一个..., # 当用户终端输入命令后,将命令交给channel通道,这个时候sys.stdin就发生变化,select就可以感知 # channel的发送命令、获取结果过程其实就是一个socket的发送和接受信息的过程...channel.close() # 关闭链接 trans.close() 注意:windows中,sys.stdin不是一个socket或者file-like对象,而是一个PseudoOutputFile...所以上面的脚本不能在windows中运行,只能用于linux。

    17.3K11

    Python paramiko 模块浅谈与SSH主要功能模拟解析

    点击箭头所指加号,搜索框输入选中,并安装 ?...三,基于用户名和密码的 transport 方式登录 基于SSHClient是传统的连接服务器、执行命令、关闭的一个操作,有时候需要登录上服务器执行多个操作,比如执行命令、上传/下载文件,上面方法则无法实现...,目录下.ssh文件夹中发现有以下文件,其中id_ras id_ras.pub保存该机器的公钥私钥, know_hosts:ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh...另外我们要注意,.ssh目录的权限为700,其下文件authorized_keys和私钥的权限为600。否则会因为权限问题导致无法免密码登录 ?..., # 当用户终端输入命令后,将命令交给channel通道,这个时候sys.stdin就发生变化,select就可以感知 # channel的发送命令、获取结果过程其实就是一个socket的发送和接受信息的过程

    2.7K10

    更优雅地远程操作服务器:Paramiko库的实践

    Paramiko能做什么 paramiko是Python语言写的一个库,遵循SSH2协议,支持以加密和认证的方式进行远程服务器的连接,利用paramiko,可以方便地进行SSH连接服务器和服务器间文件传输...Channel:是一种安全的SSH传输通道; 2. Transport:使用时会同步创建一个加密的Tunnels(通道),这个Tunnels叫做Channel; 3....,我们也可以像xftp服务器上上传下载文件。...("目标文件", r"保存位置,写到文件名") ftp_client.get(remote_path, local_path) #关闭ssh连接 ssh_ftp.close() ​...(local_path, remote_path) #关闭ssh连接 ssh_ftp.close() 基于Paramiko开发日志查询工具 实现原理很简单,就是自动化掉连接服务器(登录服务器

    56520

    如何在远程服务器上运行Jupyter Notebooks?

    如果处于这种情况,可以通过笔记本电脑上编写一个python脚本来设置实验,在数据的一小部分上运行它来验证它是否可以运行,将它复制到远程服务器,然后从命令行执行它。...您甚至可以笔记本中设置实验,并使用jupyter nbconvert将笔记本导出到脚本中——以编写您的“notebook.ipynb”脚本。...启动远程记事本服务器 我们将使用安全Shell协议(SSH)远程服务器上启动Jupyter Notebook服务器。SSH允许我们向远程服务器发送命令。...通过浏览器窗口 Jupyter Notebook的最新版本中,您可以浏览器窗口右上角找到一个退出按钮,如下图中箭头所示。...退出按钮 通过命令行 如果无法升级到具有退出按钮的新版本Jupyter,或者只是更喜欢通过终端工作,也可以从命令行停止服务器。

    3.9K20

    SSH隧道详解与使用AutoSSH实现稳定的内网穿透

    一、前言 SSH 是一种建立应用层基础上的安全协议,利用SSH进行数据传输也是较为可靠和安全的。...使用场景 当客户端可以访问主机A的任意端口,但由于网络或安全的原因客户端无法访问到主机B的任意端口。...命令示例 以下命令均在A主机执行: SSH登录后启用ssh隧道,但仅监听A主机127.0.0.1地址,退出ssh登录后隧道断开 ssh -L A转发port:B主机IP:B目的端口 root@B主机 SSH...功能解释 上面我们知道了本地转发是A服务器执行ssh命令后将转发端口设置A服务器本身,远程转发则相反,是将转发端口设置ssh命令的目标服务器上。...使用autossh进行远程转发 B主机执行命令 AutoSSH命令后不登录A主机,关闭B主机终端后隧道不会断开 autossh -M 10000 -f -N -R A主机转发端口:B主机IP:B目的端口

    4.2K50

    原来Python是这样连接远程主机的,你会吗?

    当使用用户名密码连接遇到一个异常如下: 当你连接的对方主机有SSH秘钥的时候,使用用户名密码连接的时候: ValueError: ('Invalid private key', [_OpenSSLErrorWithText...有了Paramiko以后,我们就可以Python代码中直接使用SSH协议对远程服务器执行操作,而不是通过ssh命令对远程服务器进行操作。下面主要介绍一下Paramiko的一些相关概念。...Paramiko中的几个基础名词: Channel:是一种类Socket,一种安全的SSH传输通道; Transport:是一种加密的会话,使用时会同步创建了一个加密的Tunnels(通道),这个Tunnels...():设置远程服务器没有know_hosts文件中记录的应对策略。...此为默认选项 (3) exec_command():远程服务器执行Linux命令的方法。 在这里插入图片描述 (4) open_sftp():在当前ssh会话的基础上创建一个sftp会话。

    1.9K40

    SSH】解决使用SSH命令远程连接Linux服务器加载访问慢,连接超时断开等问题

    二、问题描述 这段时间使用虚拟机装载了CentOS 7.9版本的Linux操作系统,配置好相关信息参数后,发现使用SSH命令远程连接访问服务器,总是需要等待几十秒,不能直接按完回车后,立即跳出输入登录密码的命令提示符...: GSSAPIAuthentication no # 关闭认证接口 UseDNS no # 关闭DNS解析功能 按:wq保存退出。...但该接口目标机器无域名解析时会有问题。系统是默认开启的,需要手动关闭即可。...ClientAliveInterval 60表示每分钟向客户端发送一次,然后客户端响应,这样保持长时间连接的状态,SSH远程连接不断开。...修改内容如下: # vim /etc/ssh/sshd_config 修改内容如下: ClientAliveInterval 60 ClientAliveCountMax 5 按:wq保存退出

    6.3K10

    Linux 命令(126)—— ssh 命令

    把转义字符设为 none 则禁止 转义功能,使会话完全透明 -F CONFIGFILE 指定 ssh 指令的配置文件,将忽略系统级配置文件 /etc/ssh/ssh_config 和用户级配置文件 ~...BIND_ADDRESS:]PORT:HOST:HOSTPORT 将本地主机的地址和端口接收到的数据通过安全通道转发给远程主机的地址和端口 -l LOGIN_NAME 指定登录远程主机的用户。...这可用于远程计算机上执行基于屏幕的任意程序,例如菜单服务。多个 -t 选项强制分配终端, 即使没有本地终端 -V 显示版本信息并退出 -v 冗详模式。打印关于运行情况的调试信息。...调试连接、认证和配置问题非常有用。...非对称加密中,由于只有公钥会被传输,而私钥是服务端本地保存,因此即便公钥被监听,也无法拿到原始密码,从而安全地登录服务器。 (2)远程主机上执行指定命令,如查看远程主机指定设备的分区情况。

    65.1K75

    为你的CVM设置SSH密钥吧!

    如果您说不,程序退出,什么也不写,这意味着认证者将无法工作。...第二步、配置OpenSSH 我们将在SSH上进行更改,所以不要关闭初始SSH连接的。相反,打开第二个SSH会话来进行测试。这是为了避免SSH配置中出现错误时将自己锁在服务器之外。...保存并关闭文件。现在,再次重新启动SSH。...现在,我们可以两个不同的通道上使用我们知道的东西(密码)和两种不同类型的东西(SSH密钥和验证代码)。 到目前为止,本文已经概述了如何使用SSH密钥和基于时间的一次性密码启用MFA。...无法访问TOTP应用程序 如果您需要登录到您的服务器,但无法访问您的TOTP应用程序来获取您的验证代码,您仍然可以使用第一次创建秘密密钥显示的恢复代码登录。请注意,这些恢复代码是一次性使用的。

    2.8K20

    nohup 命令 解决 SSH关闭窗口,程序也中断的问题!

    今天阿里云服务部署IOT测试软件, 发现关闭SHH窗口,IOT程序也退出了。 查了半天资料,发现通过nohup指令能解决该问题。 以下是网上查找的资料,供自己查看。...问题描述 当SSH远程连接到服务器上,然后运行一个程序,eg: ./test.sh, 然后把终端开闭(切断SSH连接)之后,发现该程序中断....一个进程退出导致一个孤儿进程组产生, 如果任意一个孤儿进程组进程处于STOP状态, 发送 SIGHUP 和 SIGCONT 信号到该进程组中所有进程....结论 因此当网络断开或终端窗口关闭后, 也就是SSH断开以后, 控制进程收到 SIGHUP 信号退出, 会导致该会话期内其他进程退出....nohup 命令,默认情况下(非重定向),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中

    5.9K20

    Linux系统下的ssh使用(依据个人经验总结)

    这些提示信息,是为了方便我们第一间知道ssh跳转到哪台目标机上,也是为了避免长期频繁跳转后由于大意造成的误入机器操作的风险,我们通常会在ssh跳转到目标机器后显示一些提示信息,一些国家, 登入给定系统前.../bin/bash ssh root@101.201.114.106 "ssh -p25791 root@103.10.86.7" 但是执行脚本的时候报错如下: Pseudo-terminal will...脚本里添加-t -t参数即可,如下: localhost:~ root# cat IDC-7.sh #!...退出客户端,再次登陆即可验证。...最后如果我们不用这种方式进行身份验证的话,建议关闭这个选项,这样可以提高验证的速度. (9)ssh自定义安全设置 1)为了ssh登陆的时候加一层保护,可以修改默认端口。

    3.9K80

    ubuntu 中愉快的安装 Jenkins

    root 的相关设置 若要使用 root 登录,第一次激活需要设置 root 用户的密码:sudo passwd, 两次密码设置后即可通过 su root 切换用户 现在可以使用 root 但是无法远程连接...切换用户:su root 权限问题:非 root 账户执行命令加上 sudo 等于超级管理员执行 常用命令: ls -a:显示所有文件及目录 pwd:查看当前路径 lsb_release -a...相关服务命令:sudo service jenkins start|stop|restart 防火墙问题 如果因为防火墙的问题可以使用:sudo ufw allow 8080 开放指定端口 ps:腾讯云的主机中默认防火墙是关闭的...正式开启 Jenkins 之旅 踩过的坑 shell 脚本无法访问环境变量 解决方案为:首行添加 #!.../bin/bash -ilex,此为我安装 nvm 后终端可以访问, Jenkins 构建 shell 脚本无法访问的解决方案 通过-i 参数和-l 参数让 bash 为 login shell

    1.8K10
    领券