Python 中的 paramiko模块是一个非常方便好用的连接远端 ssh 通道的方法。使用起来也很方便:

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

实践中,遇到一些异常,奇怪的是,同样的代码,某些服务器上面是好的,而某些服务器上面是坏的。

  1. File "/usr/local/lib/python2.7/site-packages/paramiko/client.py", line 337, in connect
  2.     self._auth(username, password, pkey, key_filenames, allow_agent, look_for_keys)
  3.   File "/usr/local/lib/python2.7/site-packages/paramiko/client.py", line 528, in _auth
  4.     raise saved_exception
  5. AuthenticationException: Authentication failed.
  6.   File "/usr/local/lib/python2.7/site-packages/paramiko/client.py", line 337, in connect
  7.     self._auth(username, password, pkey, key_filenames, allow_agent, look_for_keys)
  8.   File "/usr/local/lib/python2.7/site-packages/paramiko/client.py", line 528, in _auth
  9.     raise saved_exception
  10. paramiko.SSHException: No existing session

最终找到的解决方法很简单,在connect 的时候加入参数 allow_agent, look_for_keys 就可以了。

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

发表评论

邮箱地址不会被公开。 必填项已用*标注