【发布时间】:2023-12-26 05:25:02
【问题描述】:
首先我试图让织物工作,但它一直要求我输入密码。
所以我试图减少这个问题。也许从 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 在我的会话中运行,我可以 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)
【问题讨论】:
-
我也在 Ubuntu 11.10 中使用了 fabric,没有任何问题。听起来两种结构都没有访问与控制台 ssh 相同的密钥文件,或者您使用了错误的登录名。你记得在你的 fabfile 中设置
env.user = 'my_user'吗? -
试过了,同样的问题。我猜问题出在 paramiko 而不是面料上。首先让 paramiko 工作将是一个很好的步骤。这就是我创建上面的小测试脚本的原因。
-
您是否尝试过创建一个新的分支 RSA 密钥,确保它没有密码,将其安装在服务器上,然后改用它?
-
你试过
client.connect('192.168.1.10', password='your_passphrase')吗?我觉得这会有所帮助。 -
但是 ssh-agent 正在运行,并在我的控制台中进行了身份验证。我可以在不提供密码的情况下通过 ssh 连接到服务器。我的问题是如何用 paramiko 实现这一点。我不想在代码中输入密码,这会否定整个练习的目的。
标签: python fabric paramiko ssh-keys ssh-agent