我正在尝试使用sshtunnel创建到服务器的隧道。我正在使用ssh-key和ssh-agent:
from sshtunnel import SSHTunnelForwarder
with SSHTunnelForwarder(
(proxyhost, 22),
ssh_username=ssh_username,
#ssh_private_key_password=PASSPHRASE, # with this line it works
remote_bind_address=('127.0.0.1', 3306),
) as tunnel:
pass
找到正确的私钥,当我输入密码作为参数时,便建立了隧道(请参见上面的注释行)。
但是我已经用ssh-agent解锁了ssh私钥(重新启动后,我第一次使用ssh时才要求输入ssh密码)。是否有可能让paramiko / sshtunnel在不提示输入密码的情况下获取解锁的私钥?我想避免将密码存储在磁盘上的任何位置。
答案 0 :(得分:3)
我在遇到此问题时遇到麻烦,最后提出了解决方案。我试图使用Alembic来运行迁移,并且需要通过ssh隧道。如果SSHTunnel正在运行,SSHTunnel应该会访问您的代理,但是它也会产生如下错误:
JSON.stringify(e.target.dataset.day)
通过导入paramiko,然后使用paramiko.agent.Agent()。get_keys(),我能够访问macOS上的钥匙串中存储的加密密钥。
这是您更新的代码:
ERROR [sshtunnel.SSHTunnelForwarder:1233][MainThread] Password is required for key