Python sshtunnel - 如何验证 SSH 连接?

Posted

技术标签:

【中文标题】Python sshtunnel - 如何验证 SSH 连接?【英文标题】:Python sshtunnel - How to Validate SSH Connection? 【发布时间】:2019-02-03 19:55:33 【问题描述】:

使用 Python,我如何在以下操作后验证 SSH 连接是否成功:

server = SSHTunnelForwarder(
    (host_or_ip, 22),
    ssh_username = "ssh_username",
    ssh_private_key = path_to_key,
    remote_bind_address = (another_host_or_ip, 5432)
)

server.start()

【问题讨论】:

【参考方案1】:

我用这个来查看隧道是否打开:

server.skip_tunnel_checkup = False
server.start()
server.check_tunnels()
print(server.tunnel_is_up, flush=True)

你会在日志中看到:

('0.0.0.0', 44004): True  # this tunnel is up
('0.0.0.0', 44004): False  # this tunnel is not up

【讨论】:

【参考方案2】:

您可以使用try-exceptblock 来做到这一点。

ssh_address_or_host = ...    
ssh_username = ... 
ssh_password = ... 
remote_bind_address = ... 

try:
    with SSHTunnelForwarder(
        ssh_address_or_host = ssh_address_or_host,
        ssh_username = ssh_username,
        ssh_password = ssh_password,
        remote_bind_address = remote_bind_address
        ) as server:
        print("connected")

except Exception as e:
    print("Non connected because: " + e)

【讨论】:

你好,新手!让我换个方式问我的问题。如果我创建了一个 SSHTunnelForwarder,启动它,并且没有收到任何异常:此时有没有办法验证我是否已经成功连接?我目前正在阅读 sshtunnel github sshtunnel.py 上的 _check_tunnel 函数,看看他们是如何做到的。我想我在想可能有一种简单的方法来验证连接。 “如果我能做X,我就知道ssh隧道Y已经建立成功了。”

以上是关于Python sshtunnel - 如何验证 SSH 连接?的主要内容,如果未能解决你的问题,请参考以下文章

python sshtunnel 简单介绍

sshtunnel键盘交互式[重复]

python sshtunnel没有启动服务器给定凭据

Python用MySQLdb, pymssql 模块通过sshtunnel连接远程数据库

Python paramiko/sshtunnel 代码在 linux 下运行良好,但在 Windows 下失败

通过Python用pymysql,通过sshtunnel模块ssh连接远程数据库。