处理 paramiko.SSHClient 的 “Unknown server ” 错误

使用SSHClient的时候,遇到错误如下:

Unknown server XXXX

其实server是可以正常工作的

==== 代码如下:

ssh = SSHClient()
ssh.load_system_host_keys()
ssh.connect(server_name, port_number, username, password)


网上查看了一下,可以解决。修改一处即可。

== 

Paramiko “Unknown Server”

https://stackoverflow.com/questions/10670217/paramiko-unknown-server


==== 代码如下:

ssh = SSHClient()
ssh.set_missing_host_key_policy(AutoAddPolicy())
ssh.connect(server_name, port_number, username, password)


自己记录一下,备用。

paramiko库中的`SSHClient`是一个非常强大的工具,用于实现SSH远程连接和文件传输。它封装了SSH会话,可以用来执行远程命令以及创建SFTP客户端以进行文件操作。以下是关于如何使用`SSHClient`进行SSH连接、执行命令和文件传输的详细介绍: ### SSH连接 要使用`SSHClient`建立SSH连接,首先需要导入paramiko模块,并创建一个`SSHClient`实例。为了简化主机密钥管理,可以通过设置策略来自动添加主机密钥到本地的`KnownHosts`文件中。以下是一个基本的连接示例: ```python import paramiko # 创建 SSHClient 对象 ssh = paramiko.SSHClient() # 设置自动添加主机密钥 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接远程服务器 ssh.connect('hostname', username='username', password='password') ``` 在这个例子中,`connect`方法用于连接到指定的远程服务器。你需要提供服务器的主机名(或IP地址)、用户名和密码[^3]。如果希望使用密钥文件而不是密码进行认证,也可以通过指定`key_filename`参数来完成。 ### 执行命令 一旦建立了SSH连接,就可以使用`exec_command`方法在远程主机上执行命令。这个方法会返回三个文件对象:`stdin`、`stdout`和`stderr`,分别代表标准输入、标准输出和标准错误输出。下面是如何执行命令并读取输出的例子: ```python # 执行远程命令 stdin, stdout, stderr = ssh.exec_command('ls -l') # 读取命令输出 output = stdout.read().decode('utf-8') print(output) ``` 这段代码执行了`ls -l`命令,该命令通常用来列出当前目录下的所有文件及其详细信息。然后从`stdout`读取输出,并将其解码为UTF-8字符串后打印出来[^3]。 ### 文件传输 虽然`SSHClient`本身不直接支持文件传输,但它提供了一个`open_sftp`方法,可以用来创建一个`SFTPClient`实例,进而进行文件传输操作。以下是上传文件的一个简单示例: ```python # 创建SFTP客户端 sftp = ssh.open_sftp() # 上传文件 sftp.put('local_file_path', 'remote_file_path') # 下载文件 sftp.get('remote_file_path', 'local_file_path') # 关闭SFTP连接 sftp.close() ``` 在这个例子中,`put`方法用于将本地文件上传到远程服务器,而`get`方法则用于从远程服务器下载文件到本地。完成文件传输后,记得关闭SFTP连接[^2]。 最后,在结束与远程服务器的交互时,应该调用`close`方法来关闭SSH连接: ```python # 关闭连接 ssh.close() ``` 以上就是使用paramiko的`SSHClient`进行SSH连接、执行命令和文件传输的基本步骤。这些功能使得paramiko成为处理SSH相关任务的强大工具。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值