Python 利用 Paramiko 实现 SSH 连接与文件传输实操
针对远程服务器自动化运维与数据交换需求,本文详解如何利用 Python 的 paramiko 库建立安全 SSH 连接、自动处理主机密钥验证,并通过 API 完整演示远程命令执行及 SFTP 文件上下传的具体操作与代码示例。
基于 Paramiko 实现 SSH 通信与文件传输
SSH 协议广泛用于远程终端访问与安全数据交换。借助 Python 的 paramiko 第三方库,开发者可以灵活编写脚本替代手动命令行操作,实现连接管理、指令下发与自动化文件同步。
第1步:初始化客户端并处理主机密钥验证
使用 paramiko.SSHClient 发起连接时,默认策略会严格校验远程主机的公钥。首次连接未知服务器若未提前记录指纹,将触发 SSHException。可通过调用 set_missing_host_key_policy() 引入 AutoAddPolicy 自动信任新节点,从而跳过交互式确认拦截。
import paramiko
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(hostname='hostname', username='admin', password='password')
远程命令执行与标准流处理
第2步:调用接口获取命令输出结果
连接就绪后,通过 exec_command() 向远程环境发送指令。该方法返回一个包含三个标准文件的元组((stdin, stdout, stderr)),分别用于接收输入、读取正常输出和捕获异常信息。例如列出当前目录:
stdin, stdout, stderr = ssh_client.exec_command("ls")
print(stdout.readlines())
处理需额外输入的交互式指令
当执行 sudo 等要求输入密码的命令时,可利用 stdin 对象写入字符串并按下换行符,模拟终端键入行为。注意保持客户端变量名一致:
stdin, stdout, stderr = ssh_client.exec_command("sudo ls")
stdin.write('mypassword\n')
print(stdout.readlines())
SFTP 协议文件传输实操
第3步:打开传输通道并完成文件同步
文件收发依赖于独立的传输客户端,可通过已建立的 SSH 会话调用 open_sftp() 获取该实例。获取句柄后执行下载或上传操作,完成后及时关闭释放资源。
从远程机器下载文件到本地:
ftp_client = ssh_client.open_sftp()
ftp_client.get('remotefilepath', 'localfilepath')
ftp_client.close()
从本地上传文件到远程机器:
ftp_client = ssh_client.open_sftp()
ftp_client.put('localfilepath', 'remotefilepath')
ftp_client.close()
总结
以上就是基于 Python 与 Paramiko 实现 SSH 连接与文件传输的详细内容,更多关于 Linux 远程自动化运维的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









