python - paramiko,不是在与 ssh-agent 交谈。织物中的相同行为

标签 python fabric paramiko ssh-keys ssh-agent

首先,我试图让 fabric 正常工作,但它一直要求我输入密码。

所以我正在努力减少这个问题。从 Python 创建 SSH 连接也许是一个很好的 POC。我发现 fabric 使用 parmiko 进行 SSH 处理。唔。好的,让我们试着让一个例子工作。

这是我写的。

from ssh import *
import os 

print "SSH-AGENT VARS"

print "SSH_AGENT_PID: %s " % os.environ['SSH_AGENT_PID']
print "SSH_AUTH_SOCK: %s " % os.environ['SSH_AUTH_SOCK']

a = Agent()
keys=a.get_keys()
print keys.count("192.168.1.10")


client = SSHClient()
client.load_system_host_keys()
client.connect('192.168.1.10')

导致以下错误消息:

% ./ssh_test.py
SSH-AGENT VARS
SSH_AGENT_PID: 26557 
SSH_AUTH_SOCK: /tmp/ssh-pZHBElj26556/agent.26556 
0
Traceback (most recent call last):
  File "./ssh_test.py", line 18, in <module>
    client.connect('192.168.1.10')
  File "/usr/local/lib/python2.7/dist-packages/ssh/client.py", line 332, in connect
    self._auth(username, password, pkey, key_filenames, allow_agent, look_for_keys)
  File "/usr/local/lib/python2.7/dist-packages/ssh/client.py", line 493, in _auth
    raise saved_exception
ssh.PasswordRequiredException: Private key file is encrypted

ssh-agent 在我的 session 中运行,我可以通过 SSH 连接到那个盒子,没问题,它不会提示我输入密码或任何东西。

我猜 paramiko 由于某种奇怪的原因无法连接到正在运行的 ssh-agent。

有没有人遇到过这样的问题?我正在使用 Ubuntu 11.10

我好像记得前阵子试过Fabric也有类似的问题,可能是坏了一段时间?

我连接,只是使用主机名作为参数。这是根据文档。

http://www.lag.net/paramiko/docs/paramiko.SSHClient-class.html

connect(self, hostname, port=22, username=None, password=None, pkey=None, key_filename=None, timeout=None, allow_agent=True, look_for_keys=True, compress=False)

最佳答案

因此,当您执行 a.get_keys() 时,从 paramiko 代码和您的代码应该返回一个列表。我会看看它返回了什么。而且它不会返回您可以像那样计算的东西,因为它返回的是实际的加密 key 位。但无论如何,当您转移到 ssh 并且它起作用时,让我们转移到 Fabric。

您可以通过执行以下操作为 ssh 库打开它来获得更多日志记录:

import ssh
ssh.util.log_to_file("paramiko.log", 10)

在你的 fabfile 中。这将显示所有日志并显示更多 paramiko/ssh 本身正在做的事情,这可能有助于您进一步调试问题。

关于python - paramiko,不是在与 ssh-agent 交谈。织物中的相同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9843803/

相关文章:

python - 如何使用 R reticulate 激活现有的 Python 环境

python - 如何使用 selenium/webdriver 打开网站?

python - 如何在 python 结构中提供公钥密码短语

python 格式采用织物彩色字符串的实际长度

python - 重新运行 model.fit 时,使用步骤衰减进行训练不会保留最后一个纪元。学习率错误

python - 记录函数时如何引用 "True-like"和 "False-like"?

python - 在结构中添加环境变量的最佳方法?

python - Paramiko 问题 - 执行命令时 channel 关闭

python - 使用 Paramiko 进行端口转发

python - 使用 Paramiko 运行数据库脚本失败并显示退出代码