将 ssh_config 文件与 Paramiko 一起使用

问题描述 投票:0回答:2

我需要使用 SSH 连接到服务器来下载文件。我有 Ubuntu,并且以标准方式设置了 SSH:我在

ssh_config
中有一个
.ssh
文件,它定义了服务器地址 (
host_key
) 和用户名的主机条目(例如
Hostname.com
),以及我已经设置了 RSA 密钥。因此,当我尝试从命令行或 bash 登录 SSH 时,我只需要使用
ssh host_key

我想用Python 来做这个。标准解决方案似乎是使用 Paramiko 来建立连接。我试过这个:

from paramiko import SSHClient
from scp import SCPClient

ssh = SSHClient()
ssh.load_system_host_keys()
ssh.connect('host_key')

scp = SCPClient(ssh.get_transport())
# etc...

但是,它似乎总是挂起并在

ssh.connect('host_key')
上超时。即使我尝试输入用户名和密码:
ssh.connect('host_key', username='usrnm', password='pswd')

我的主机密钥未正确加载吗?这也能处理 RSA 密钥吗?

只有当我使用整个

Hostname.com
以及用户名和输入的密码时,它才有效。这可能有点不安全。

python ssh paramiko openssh
2个回答
4
投票

由于

paramiko
有一个 SSHConfig 类,您可以将它用于您的
~/.ssh/config
。 然而,它有点乱,我建议你使用fabric代替它。 这是代码示例:

from fabric.api import put
put('local path', 'remote path')

0
投票

我认为将

ssh_config
文件与 Paramiko(或任何其他代码/语言)一起使用并不常见。
ssh_config
是OpenSSH工具的配置文件,而不是一般的SSH。

通常,您直接在代码中指定私钥作为

SSHClient.connect
方法的参数:
如何使用带有公钥文件的 Paramiko 访问远程服务器


如果你想继续使用

ssh_config
,Paramiko 可以解析它。检查
parse_ssh_config
lookup_ssh_host_config
功能。但我相信,您仍然需要从配置中查找密钥文件并将其显式传递给
SSHClient.connect
方法。

© www.soinside.com 2019 - 2024. All rights reserved.