猿问

Python paramiko.ssh_exception.SSHException:没有现有会话

host = "test.rebex.net"

port = 22

username = "demo"

password = "password"


command = "ls"


ssh = paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect(host, port, username, password)


stdin, stdout, stderr = ssh.exec_command(command)

lines = stdout.readlines()

print(lines)

应该产生这个输出。


['aspnet_client\n', 'pub\n', 'readme.txt\n']

该凭证在该演示网站上运行良好


wolf@linux:~$ sshpass -p password ssh demo@test.rebex.net

Welcome to Rebex Virtual Shell!

For a list of supported commands, type 'help'.

demo@ETNA:/$ 

demo@ETNA:/$ ls

aspnet_client

pub

readme.txt

demo@ETNA:/$ 

但是,该代码无法按预期工作。我在行后立即收到错误ssh.connect(host, port, username, password)。


>>> import paramiko

>>> host = "test.rebex.net"

>>> username = "demo"

>>> password = "password"

>>> port = 22

>>> 

>>> command = "ls"

>>> 

>>> ssh = paramiko.SSHClient()

>>> ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

>>> ssh.connect(host, port, username, password)

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

  File "/home/wolf/.local/lib/python3.8/site-packages/paramiko/client.py", line 435, in connect

    self._auth(

  File "/home/wolf/.local/lib/python3.8/site-packages/paramiko/client.py", line 764, in _auth

    raise saved_exception

  File "/home/wolf/.local/lib/python3.8/site-packages/paramiko/client.py", line 751, in _auth

    self._transport.auth_password(username, password)

  File "/home/wolf/.local/lib/python3.8/site-packages/paramiko/transport.py", line 1498, in auth_password

    raise SSHException("No existing session")

paramiko.ssh_exception.SSHException: No existing session

>>> 

让我知道如何使其发挥作用。我只想要一个用于 SSH 连接的简单代码。


更新


>>> ssh.connect(host, port, username, password, look_for_keys=False, allow_agent=False)

>>> 


慕雪6442864
浏览 525回答 1
1回答

红颜莎娜

该代码对我有用。当我在 Pageant 中加载密钥时,我也遇到错误auth_password(尽管不同 - “身份验证失败” )。在 Paramiko 尝试使用 Pageant 密钥后,Rebex 测试服务器似乎关闭了会话。连续密码认证失败。我想你的情况也会有类似的问题。不同的错误消息可能只是由于时间差异造成的。starting thread (client mode): 0x33629f0Local version/idstring: SSH-2.0-paramiko_2.6.0Remote version/idstring: SSH-2.0-RebexSSH_5.0.7448.0Connected (version 2.0, client RebexSSH_5.0.7448.0)kex algos:['curve25519-sha256', 'curve25519-sha256@libssh.org', 'ecdh-sha2-nistp521', 'ecdh-sha2-nistp384', 'ecdh-sha2-nistp256', 'diffie-hellman-group16-sha512', 'diffie-hellman-group15-sha512', 'diffie-hellman-group-exchange-sha256', 'diffie-hellman-group14-sha256', 'diffie-hellman-group14-sha1', 'diffie-hellman-group-exchange-sha1'] server key:['ssh-ed25519', 'ecdsa-sha2-nistp256', 'rsa-sha2-512', 'ssh-rsa-sha256@ssh.com', 'rsa-sha2-256', 'ssh-rsa'] client encrypt:['aes256-gcm@openssh.com', 'aes128-gcm@openssh.com', 'aes256-ctr', 'aes256-cbc', 'aes192-ctr', 'aes192-cbc', 'aes128-ctr', 'aes128-cbc', 'chacha20-poly1305@openssh.com', 'twofish256-ctr', 'twofish192-ctr', 'twofish128-ctr', 'twofish256-cbc', 'twofish192-cbc', 'twofish128-cbc', 'twofish-cbc', '3des-ctr', '3des-cbc'] server encrypt:['aes256-gcm@openssh.com', 'aes128-gcm@openssh.com', 'aes256-ctr', 'aes256-cbc', 'aes192-ctr', 'aes192-cbc', 'aes128-ctr', 'aes128-cbc', 'chacha20-poly1305@openssh.com', 'twofish256-ctr', 'twofish192-ctr', 'twofish128-ctr', 'twofish256-cbc', 'twofish192-cbc', 'twofish128-cbc', 'twofish-cbc', '3des-ctr', '3des-cbc'] client mac:['hmac-sha2-512-etm@openssh.com', 'hmac-sha2-256-etm@openssh.com', 'hmac-sha2-512', 'hmac-sha2-256', 'hmac-sha1', 'hmac-sha1-96'] server mac:['hmac-sha2-512-etm@openssh.com', 'hmac-sha2-256-etm@openssh.com', 'hmac-sha2-512', 'hmac-sha2-256', 'hmac-sha1', 'hmac-sha1-96'] client compress:['none'] server compress:['none'] client lang:[''] server lang:[''] kex follows?FalseKex agreed: curve25519-sha256@libssh.orgHostKey agreed: ssh-ed25519Cipher agreed: aes128-ctrMAC agreed: hmac-sha2-256Compression agreed: nonekex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>Switch to new keys ...Adding ssh-ed25519 host key for test.rebex.net: b'e7e445c6b8e4bbd868892786fd0158f0'Trying SSH agent key b'3f3ae3e3b0e0ef4e5b4bfe93613557d4'userauth is OKAuthentication (publickey) failed.Disconnect (code 2): Authentication is already in progress.如果您想避免尝试 Pageant,请使用allow_agent以下参数SSHClient.connect:ssh.connect(host, port, username, password, allow_agent=False)强制性警告:请勿使用-这样做您将失去针对MITM 攻击的AutoAddPolicy保护。
随时随地看视频慕课网APP

相关分类

Python
我要回答