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

Python:远程服务器宕机后自动重新连接ssh隧道

远程服务器宕机后自动重新连接ssh隧道是一种通过Python编程语言实现的自动化脚本,用于在远程服务器宕机后重新建立与服务器的SSH连接,并恢复之前建立的SSH隧道。

SSH(Secure Shell)是一种网络协议,用于在不安全的网络中安全地进行远程登录和文件传输。SSH隧道是通过SSH协议在两个网络节点之间建立的加密通道,用于安全地传输数据。

以下是实现远程服务器宕机后自动重新连接SSH隧道的Python代码示例:

代码语言:python
代码运行次数:0
复制
import paramiko
import time

def reconnect_ssh_tunnel(hostname, username, password, ssh_port, remote_port, local_port):
    while True:
        try:
            # 创建SSH客户端对象
            client = paramiko.SSHClient()
            # 自动添加远程主机的SSH密钥
            client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
            # 连接远程服务器
            client.connect(hostname, port=ssh_port, username=username, password=password)
            
            # 检查SSH隧道是否仍然有效
            transport = client.get_transport()
            if transport is None or not transport.is_active():
                # 如果SSH隧道无效,则重新建立SSH隧道
                transport = client.get_transport()
                channel = transport.open_channel("forwarded-tcpip", dest_addr=(hostname, remote_port), src_addr=("", local_port))
                print("重新建立SSH隧道成功")
            
            # 保持SSH连接,防止自动断开
            while True:
                time.sleep(60)
            
        except paramiko.AuthenticationException:
            print("SSH连接认证失败")
            break
        except paramiko.SSHException as e:
            print("SSH连接异常:", str(e))
            time.sleep(60)
        except Exception as e:
            print("其他异常:", str(e))
            break

# 示例用法
reconnect_ssh_tunnel("远程服务器IP", "用户名", "密码", 22, 8888, 9999)

上述代码使用了Paramiko库,它是一个用于SSH协议的Python实现。代码中的reconnect_ssh_tunnel函数接受远程服务器的IP地址、用户名、密码、SSH端口、远程端口和本地端口作为参数。在函数内部,通过循环不断尝试重新连接远程服务器,并检查SSH隧道是否仍然有效。如果SSH隧道无效,则重新建立SSH隧道。最后,通过保持SSH连接的方式,防止自动断开。

这种自动重新连接SSH隧道的脚本适用于需要保持长时间运行的应用程序,例如数据传输、远程监控等场景。腾讯云提供了多种云计算产品,如云服务器、云数据库、云存储等,可以用于搭建和管理远程服务器环境。具体推荐的腾讯云产品和产品介绍链接地址可以根据实际需求进行选择。

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

相关·内容

  • 如何让计算机工作环境更便捷?几行简单的命令即可

    出于安全原因,远程服务器无法直接访问,这意味着它们只能由网关机器访问。 连接服务器的基本方法是首先将 ssh 连接到网关,然后将 ssh 连接服务器,每次连接时都需要输入用户名和密码。...更多便捷技巧 保持 SSH 打开 如果你已经使用隧道一段时间,你可能发现如果闲置几分钟隧道往往在不工作时都会断开连接。如果你同时在处理好几件事,而没有一直使用隧道,那这个重复连接的工作真的很烦人。...第二天,你想重新开始工作,你在本地计算机上准备打开隧道时发现,...... 连接已关闭,你需要重新打开它。这也让人心累不是吗?幸运的是,这也有解决方案!...例如,你可以将计算机置于休眠状态,断开 Wifi 等连接,但一旦重新联机,此程序将重新为你连接 ssh。...在左侧菜单中,单击 SSH 解释器 单击「现有服务器配置」选项,使用我们之前创建的部署配置。 选择远程解释器(例如 anaconda / python) ... 全部完成!

    60410

    如何配置Pycharm实现本地编写代码远程服务器编译并同步代码

    前言 本文主要介绍如何使用Pycharm进行远程开发,使用内网穿透工具实现异地连接服务器编译代码与项目同步。...选择System Interpreter(选择服务器的代码解释器),选择服务器远程Python解释器路径(如果您安装了其他Python或虚拟环境则根据实际情况填写) 配置项目路径,意思是本地项目和远程实例中的哪个目录进行关联...创建远程连接公网地址 登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——创建隧道隧道名称:可自定义,注意不要与已有的隧道名称重复 协议:tcp 本地地址:22 (本地ssh默认端口...) 域名类型:临时随机TCP端口 地区:选择China 点击创建 创建成功,打开左侧在线隧道列表,查看刚刚创建隧道后生成的tcp地址,这个地址就是公网连接地址,接下来使用这个地址:1.tcp.cpolar.cn...这里我们看到,已经自动查到我们服务器中编译器路径和项目保存路径;点 create。

    1.3K20

    Python建立SSH连接与使用方法

    图片 paramiko是一个Python实现的SSH协议库,可以用来建立SSH连接、传输文件等。你可以在Python环境中使用pipan,所以我们需要安装paramiko。...2.使用set_missing_host_key_policy方法来设置主机自动添加策略 3.然后使用connect方法连接远程主机。...SSH隧道操作方式如下: 在本地机器上运行SSH客户端,并指定远程主机的IP地址和登录凭据。 在SSH连接中添加隧道,指定本地端口和远程主机上的端口。...连接远程主机,本地端口将被转发到远程主机上的指定端口,从而实现数据的隧道传输。 SSH代理操作方式如下: 在本地机器上运行SSH客户端,并指定远程主机的IP地址和登录凭据。...在SSH连接中添加代理,指定本地端口和远程主机上的端口。 在本地机器上配置代理服务器SSH代理。 连接远程主机,所有网络流量都将通过SSH代理传输。

    1.3K10

    如何实现无公网ip环境使用vscode远程ssh内网Linux系统写代码

    前言 远程连接服务器的工具有很多,比如XShell、putty等,可以通过ssh远程连接服务器,但这用于写代码并不方便,可能需要现在本地写好代码再将源代码传送到服务器运行、服务器上的图片也无法直接查看...Login Terminal并勾选该选项 点击左侧工具栏中的远程按钮,可以查看远程连接,点击SSH TARGETS下面显示的服务器旁边的按钮进行连接操作 3....局域网测试连接远程服务器ssh连接ubuntu为例,打开vscode,先尝试使用局域网地址ssh远程ubuntu 输入命令到对话框中,并回车 ssh username@ip 选择一个配置文件 输入完成在右侧会显示出来刚刚添加的...协议 website隧道:指向本地8080端口,HTTP协议 4.2 创建隧道映射 我们可以直接使用样例隧道ssh,或者重新创建一个隧道,使用tcp协议,指向22端口。...点击SSH TARGETS下面显示的服务器旁边的按钮进行连接操作 如左侧没有出现添加的连接,点如下按钮刷新 接着点击小箭头 --> 连接,出现选择ssh 类型,选择linux 输入参数,和密码即可远程成功

    14410

    【vscode远程开发】使用SSH远程连接服务器 「内网穿透」

    前言 远程连接服务器工具有很多,比如XShell、putty等,可以通过ssh远程连接服务器,但这用于写代码并不方便,可能需要现在本地写好代码再将源代码传送到服务器运行、服务器上的图片也无法直接查看...Login Terminal并勾选该选项 点击左侧工具栏中的远程按钮,可以查看远程连接,点击SSH TARGETS下面显示的服务器旁边的按钮进行连接操作 3....局域网测试连接远程服务器ssh连接ubuntu为例,打开vscode,先尝试使用局域网地址ssh远程ubuntu 输入命令到对话框中,并回车 ssh username@ip 选择一个配置文件...协议 website隧道:指向本地8080端口,HTTP协议 4.2 创建隧道映射 我们可以直接使用样例隧道ssh,或者重新创建一个隧道,使用tcp协议,指向22端口。...点击SSH TARGETS下面显示的服务器旁边的按钮进行连接操作 如左侧没有出现添加的连接,点如下按钮刷新 接着点击小箭头 --> 连接,出现选择ssh 类型,选择linux 输入参数,和密码即可远程成功

    1.6K91

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

    ,因此IP是127.0.0.1) 需要让远程机器能访问的内部机器的端口号(端口:22) 在清楚了上面的参数,我们使用下面的命令来建立一个远程SSH隧道 $ ssh -N -f -R 2222:127.0.0.1...建立 SSH 隧道的几个技巧 自动重连 隧道可能因为某些原因断开,例如:机器重启,长时间没有数据通信而被路由器切断等等。...因此我们可以用程序控制隧道重新连接,例如一个简单的循环或者使用 djb’s daemontools . 不管用哪种方法,重连时都应避免因输入密码而卡死程序。...ServerAliveInterval 会在隧道无通信的一段设置好的时间发送一个请求给服务器要求服务器响应。...如果服务器在 ServerAliveCountMax 次请求都没能响应,那么 SSH 客户端就自动断开连接并退出,将控制权交给你的监控程序。

    4.2K50

    内网转发及隐蔽隧道 | 使用SSH做端口转发以及反向隧道

    使用SSH做端口转发以及反向隧道 目录 SSH做本地端口转发 SSH做反向隧道(远程端口转发) 用autossh建立稳定隧道 SSH开启端口转发需要修改 /etc/ssh/sshd_config...配置文件,将 GatewayPorts修改为yes -f 后台执行ssh指令 -C 允许压缩数据 -N 不执行远程指令 -R 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口 -L 本地端口转发...►用autossh建立稳定隧道 安装autossh:yum install autossh autossh的参数与ssh的参数是一致的,但是不同的是,在隧道断开的时候,autossh会自动重新连接ssh...另外不同的是我们需要指出的-M参数,这个参数指定一个端口,这个端口是外网的B机器用来接收内网A机器的信息,如果隧道不正常而返回给A机器让他实现重新连接。...在内网A机器上的操作: ssh -p 1234 root@100.100.10.12 #ssh连接到公网服务器的1234端口 参考文章:实战SSH端口转发 使用SSH反向隧道进行内网穿透

    1.9K10

    Windows系统安装OpenSSH结合VS Code远程ssh连接Ubuntu【内网穿透】

    前言 远程连接服务器的工具有很多,比如XShell、putty等,可以通过ssh远程连接服务器,但这用于写代码并不方便,可能需要现在本地写好代码再将源代码传送到服务器运行、服务器上的图片也无法直接查看...Login Terminal并勾选该选项 点击左侧工具栏中的远程按钮,可以查看远程连接,点击SSH TARGETS下面显示的服务器旁边的按钮进行连接操作 3....局域网测试连接远程服务器ssh连接ubuntu为例,打开vscode,先尝试使用局域网地址ssh远程ubuntu 输入命令到对话框中,并回车 ssh username@ip 选择一个配置文件 输入完成在右侧会显示出来刚刚添加的...协议 website隧道:指向本地8080端口,HTTP协议 4.2 创建隧道映射 我们可以直接使用样例隧道ssh,或者重新创建一个隧道,使用tcp协议,指向22端口。...点击SSH TARGETS下面显示的服务器旁边的按钮进行连接操作 如左侧没有出现添加的连接,点如下按钮刷新 接着点击小箭头 --> 连接,出现选择ssh 类型,选择linux 输入参数,和密码即可远程成功

    39810

    如何在Ubuntu 16.04上设置Jupyter Notebook以运行IPython

    在本教程的最后,您将能够使用在远程服务器上运行的Ipython和Jupyter Notebook来运行Python 2.7代码。...如果您在CVM上运行Jupyter Notebook,则需要使用SSH隧道连接到localhost:8888服务器,如下一节所述。...此时,您可以保持SSH连接打开并保持Jupyter Notebook运行,或者可以退出应用程序并在设置SSH隧道重新运行它。让我们保持简单并停止Jupyter Notebook流程。...隧道连接服务器 在本节中,我们将学习如何使用SSH通道连接到Jupyter Notebook Web界面。...现在单击 “Add”按钮,端口应显示在Forwarded ports列表中: 最后,单击“ Open”按钮以通过SSH连接服务器隧道连接所需的端口。

    4K51

    内网渗透之隐藏通信隧道技术

    进入目录运行 ./run.sh ? 依次输入攻击机IP和受害机IP便会自动输出需要在受害机上运行的命令 在受害机运行 ? 在攻击机上便可以见到回弹shell ? ?...1080端口便可以连接到数据库服务器远程桌面了(3389) ?...nc -v 192.168.1.4 9999 -c "nc -v 192.168.1.2 9999" 这条命令的意思就是web服务器先去连接攻击机,连上之后立刻去连接数据库服务器的9999端口,连接成功把两个隧道合并为一条隧道...应用层 1.SSH 几乎所有的unix/linux主机都支持SSH协议,都可以通过SSH通信而在现实情况中,网管员经常会使用SSH连接远程管理内网中的主机,所以一般情况下,边界设备并不会拦截SSH流量...-N 建立静默连接 -g 允许远程主机连接本地用于转发的端口 -L 本地端口转发 -R 远程端口转发 -D 动态转发 -P 指定SSH端口 (1).本地转发 本次实验网络拓扑图: ?

    1.7K40

    如何在Debian 9上使用Python 3设置Jupyter笔记本

    此时,您可以保持SSH连接打开并保持Jupyter Notebook运行,或者可以退出应用程序并在设置SSH隧道重新运行它。让我们保持简单并停止Jupyter Notebook流程。...步骤5 - 使用SSH隧道连接服务器 在本节中,我们将学习如何使用SSH隧道连接到Jupyter Notebook Web界面。...使用Mac或Linux进行SSH隧道连接 如果您使用的是Mac或Linux,则创建SSH隧道的步骤类似于使用SSH登录到远程服务器,但ssh命令中还有其他参数。...SSH连接,但-L指定将本地(客户端)主机上的给定端口转发到远程端(服务器)上的给定主机和端口。...现在单击“ 添加”按钮,端口应显示在“ 转发端口”列表中: 最后,单击“ 打开”按钮以通过SSH连接服务器隧道连接所需的端口。

    2.8K94

    如何安装,运行和连接远程服务器上的Jupyter Notebook

    第3步 - 使用SSH隧道连接到Jupyter Notebook应用程序 SSH隧道连接服务器上运行的Jupyter Notebook应用程序的一种简单而快速的方法。...安全shell(通常称为SSH)是一种网络协议,使您可以通过不安全的网络安全地连接远程服务器。...ssh是打开SSH连接的标准命令,但是当与-L指令一起使用时,您可以指定本地主机(即本地计算机)上的给定端口将转发到远程主机上的给定主机和端口(在这种情况下,您的服务器)。...这将通过SSH将您的机器连接服务器隧道传输所需的端口。...此时,您应该使用SSH隧道连接服务器,并从服务器启动Jupyter Notebook应用程序。

    16.2K118

    Windows系统部署GoLand结合内网穿透实现SSH远程Linux服务器开发调试

    Connection and Continue进行连接 输入服务器端密码,点击Authenticate 可以看到在本地连接成功,可以看到服务器端文件,点击open an SSH terminal 测试一下修改文件里的内容...安装cpolar内网穿透远程访问服务器端 4.1 服务器端安装cpolar 本地测试完成,我们需要在服务器上安装cpolar内网穿透工具,通过cpolar 转发本地端口映射的公网地址,我们可以很容易实现远程访问...4.2 创建远程连接公网地址 登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——创建隧道隧道名称:可自定义,注意不要与已有的隧道名称重复 协议:tcp 本地地址:22 (本地ssh...back回到SSH界面,重新点击New Project。...可以看到使用cpolar生成的固定的公网地址远程连接服务器端成功 我们已经能够使用永久固定地址来远程操作服务器,这样就可以在任意地点远程使用服务器进行办公,大大提高了工作的效率!

    27121

    Windows系统使用Tabby终端工具远程ssh连接本地Linux服务器

    前言 今天和大家分享一下如何在Windows系统使用Tabby,这款强大的开源跨平台终端工具远程ssh连接本地局域网内的Linux服务器从安装到配置的详细流程。...4.2 Tabby远程ssh连接ubuntu 我想要使用当前的Windows系统通过Tabby远程ssh连接本地局域网内的Linux服务器,可以先在设置界面中点击新建,然后选择新配置,再选择ssh连接:...登录进入cpolar web UI管理界面,点击左侧隧道管理——隧道列表 可以看到安装cpolar,会自动创建一条ssh隧道。...(如果要创建其他服务的公网地址需要点击创建隧道进行配置) 然后点击下方的在线隧道列表,可以看到ssh的公网地址: 5.2 使用公网地址远程ssh连接 现在,我们可以回到Windows系统中的Tabby,...对本地内网中的ubuntu ssh连接重新进行配置: 把之前ubuntu的主机地址替换为上边使用cpolar内网穿透生成的公网地址与端口,点击保存即可: 然后,我们再次点击ssh连接,即可看到在公网环境也能成功远程

    37020

    如何在Ubuntu 18.04上安装和配置VNC

    在本指南中,您将在Ubuntu 18.04服务器上设置VNC服务器,并通过SSH隧道安全地连接到该服务器。您将使用TightVNC,一种快速轻巧的远程控制软件包。...没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装再购买服务器。 安装了VNC客户端的本地计算机,支持通过SSH隧道的VNC连接。...第3步 - 安全地连接VNC桌面 连接时VNC本身不使用安全协议。我们将使用SSH隧道安全地连接到我们的服务器,然后告诉我们的VNC客户端使用该隧道而不是直接连接。...隧道运行,使用VNC客户端进行连接localhost:5901。系统将提示您使用在步骤1中设置的密码进行身份验证。 连接,您将看到默认的Xfce桌面。...重新启动计算机,您的VNC服务器现在可用。

    45.1K36

    使用 ssh 端口转发实现登陆内网主机

    参数介绍 反向代理 ssh -fCNR 正向代理 ssh -fCNL -f 后台执行ssh指令 -C 允许压缩数据 -N 不执行远程指令 -R 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口...的参数是一致的,但是不同的是,在隧道断开的时候,autossh会自动重新连接ssh不会。...另外不同的是我们需要指出的-M参数,这个参数指定一个端口,这个端口是外网的A机器用来接收内网B机器的信息,如果隧道不正常而返回给B机器让他实现重新连接。...自动启动autossh 在内网机器B上操作 最后配置在Linux上配置开机自动启动autossh,免去了重启Linux要自己启动的autossh的麻烦 输入: vi /etc/rc.d/rc.local...autossh -M 20322 -fCNR 20122:localhost:22 roota@192.168.0.2 因为centos7之后,原来直接修改/etc/rc.d/rc.local启动脚本自动生效的功能因为修改了需要重新赋予可执行权限

    3.1K30

    使用GoLand通过SSH远程连接服务器,并结合内网穿透工具实现远程办公

    本文主要介绍使用GoLand通过SSH远程连接服务器,并结合cpolar内网穿透工具实现远程办公。 GoLand是由JetBrains推出的一款专为Go语言开发设计的集成开发环境(IDE)。...安装cpolar内网穿透远程访问服务器端 4.1 服务器端安装cpolar 本地测试完成,我们需要在服务器上安装cpolar内网穿透工具,通过cpolar 转发本地端口映射的公网地址,我们可以很容易实现远程访问...4.2 创建远程连接公网地址 登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——创建隧道隧道名称:可自定义,注意不要与已有的隧道名称重复 协议:tcp 本地地址:22 (本地ssh...back回到SSH界面,重新点击New Project。...可以看到使用cpolar生成的固定的公网地址远程连接服务器端成功 我们已经能够使用永久固定地址来远程操作服务器,这样就可以在任意地点远程使用服务器进行办公,大大提高了工作的效率!

    15110
    领券