python paramiko包 ssh报错No existing session 解决方法

在connect 的时候加入参数 allow_agent, look_for_keys 就可以了

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

具体过程如下:

使用 python交互式shell和本地运行的openssh,我使用paramiko不断得到一个“No existing session”异常.我的代码如下

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,并已成功连接到另一个服务器.在通过这里搜索后,我发现的是授权异常的提及,这在这里似乎不是这样.

解决方法

由于您已经拥有密码,因此无需与代理商进行通话,或者寻找存储在机器上的私钥.所以尝试传递额外的参数allow_agent,look_for_keys:

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

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
你好!关于你提到的错误,ConnectionResetError: [Errno 104] Connection reset by peer,这通常是由于网络连接问题引起的。它表示远程主机突然关闭了连接。 有几个可能的原因和解决方法可以尝试: 1. 确保你的网络连接稳定。检查你的网络设置,确保没有任何网络故障或防火墙阻止了 SSH 连接。 2. 确认 SSH 服务器是否正常运行。确保目标服务器上的 SSH 服务正在运行,并且正确地监听 SSH 默认端口(默认是22)。 3. 检查目标服务器的身份验证设置。如果服务器配置了仅允许特定用户或密钥进行身份验证,确保你提供的身份验证信息正确。 4. 考虑通过增加超时选项来增加连接时间。在 paramikoSSHClient 对象上设置超时选项可以防止连接过早关闭。 下面是一个使用 paramiko 进行 SSH 连接的示例代码,你可以参考一下: ```python import paramiko # 创建 SSH 客户端 client = paramiko.SSHClient() client.load_system_host_keys() # 设置自动添加远程主机密钥 client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接远程主机 client.connect('hostname', port=22, username='username', password='password') # 执行命令 stdin, stdout, stderr = client.exec_command('your_command') # 输出结果 print(stdout.read().decode()) # 关闭连接 client.close() ``` 请注意,上述代码中的 'hostname'、'username' 和 'password' 分别需要替换为你要连接的远程主机的实际值。 希望以上信息对你有所帮助!如果你还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值