paramiko无现有会话异常

2024-05-16 09:19:19 发布

您现在位置:Python中文网/ 问答频道 /正文

使用python交互式shell和在本地运行的openssh,我一直使用paramiko得到一个“不存在会话”异常。我的代码在下面。

import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('localhost',username=name,password=pw)

结果:

No handlers could be found for logger "paramiko.transport"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.6/dist-packages/paramiko-1.7.7.1-py2.6.egg/paramiko/client.py", line 332, in connect
    self._auth(username, password, pkey, key_filenames, allow_agent, look_for_keys)
  File "/usr/local/lib/python2.6/dist-packages/paramiko-1.7.7.1-py2.6.egg/paramiko/client.py", line 493, in _auth
    raise saved_exception
paramiko.SSHException: No existing session

我以前可以连接,但一直在尝试调整此设置以允许基于密钥的授权。那次失败了,从那以后我就不能在本地连接了。我已尝试重新启动openssh,并已成功连接到另一台服务器。在这里搜索之后,我发现的只是提到了授权异常,而这里并不是这样。


Tags: keynoinparamikoforlibusrlocal
3条回答

由于您已经拥有密码,所以不需要与代理交谈或查找存储在计算机上的私钥。所以尝试传递额外的参数allow_agentlook_for_keys

ssh.connect('localhost',username=name,password=pw,allow_agent=False,look_for_keys=False)

https://bugs.launchpad.net/paramiko/+bug/912123

你在用哪个操作系统? 也许您可以检查env变量: SSH_AUTH_SOCK公司

对于“connect”,它将尝试使用ssh代理。 在agent.py中

 self.conn = None
 self.keys = ()
 if ('SSH_AUTH_SOCK' in os.environ) and (sys.platform != 'win32'):
     conn = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
     try:
         conn.connect(os.environ['SSH_AUTH_SOCK'])
     except:
     # probably a dangling env var: the ssh agent is gone
         return
         self.conn = conn
 elif sys.platform == 'win32':
     import win_pageant
     if win_pageant.can_talk_to_agent():
         self.conn = win_pageant.PageantConnection()
 else:
     return

我的ssh add列表中有一个备用公钥和一个密钥密码短语。一旦我删除了它,我就能够正确地执行基于paramiko的脚本。

列出:

ssh-add -l

要全部删除:

ssh-add -D

要重新添加:

ssh-add /FULL/PATH/TO/id_rsa

相关问题 更多 >