Ste*_*app 3 python ssh paramiko
我打算在客户端和服务器之间使用 SSH 密钥创建使用无密码连接。
使用 paramiko,我最终遇到AuthenticationException。通过 Popen 使用标准 SSH,我可以毫无问题地连接
对于 Paramiko,我使用以下代码:
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.load_system_host_keys()
client.connect(ssh_server, username=ssh_user)
Run Code Online (Sandbox Code Playgroud)
对于同样的情况,我可以使用 SSH:
cmd = 'ssh -o GSSAPIAuthentication=no -o ForwardX11=no {}@{} echo 0 > /dev/null'.format(ssh_user, ssh_server)
process = subprocess.Popen(md, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
process.communicate()
Run Code Online (Sandbox Code Playgroud)
我正在使用 Python 3.4.6 和 Paramiko 2.4.1。
更多细节:
Paramiko 调试输出
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.load_system_host_keys()
client.connect(ssh_server, username=ssh_user)
Run Code Online (Sandbox Code Playgroud)
SSH 调试:(使用 ssh -v ssh_user AT ssh_server)
cmd = 'ssh -o GSSAPIAuthentication=no -o ForwardX11=no {}@{} echo 0 > /dev/null'.format(ssh_user, ssh_server)
process = subprocess.Popen(md, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
process.communicate()
Run Code Online (Sandbox Code Playgroud)
您的连接有效,因为它使用来自(如 中配置的)ssh的私钥。该文件夹和文件用作 OpenSSH 工具集的配置(在本例中)。您不能期望其他 SSH 客户端/库将使用 OpenSSH 配置文件。一般来说,他们不会。~/.ssh/id_rsa_c2cssh_config.sshssh_configssh
如果您想对 Paramiko 使用公钥身份验证,请使用key_filename参数SSHClient.connect。
另请参阅如何使用 ppk 公钥通过 Python Paramiko 进行 ssh 连接。
尽管 Paramiko 特别会使用密钥文件,但如果它有一个通用名称,例如id_rsa、id_dsa等。请参阅Python 中的 Paramiko 中的强制密码身份验证(忽略 .ssh 文件夹中的密钥)以了解完全相反的问题。
强制性警告:不要使用AutoAddPolicy,除非您不关心安全性。通过这种方式,您将失去针对 MITM 攻击的保护。
正确的解决方案请参见Paramiko“未知服务器”。
| 归档时间: |
|
| 查看次数: |
5537 次 |
| 最近记录: |