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-except
block 来做到这一点。
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用MySQLdb, pymssql 模块通过sshtunnel连接远程数据库