Paramiko安装与使用教程-快速掌握Python SSH库的实践指南

2025-05-03 25

Paramiko 安装与使用教程

Paramiko 是一个用于 Python 的 SSHv2 协议库,提供了客户端和服务器功能。以下是完整的安装与使用指南。

1. 安装 Paramiko

基本安装

pip install paramiko

可选依赖(提高性能)

pip install pycryptodome ecdsa

2. 基本使用示例

2.1 密码认证连接

import paramiko

# 创建SSH客户端实例
ssh = paramiko.SSHClient()

# 自动添加主机密钥(生产环境应考虑更安全的方式)
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 连接服务器
ssh.connect(
    hostname='example.com',
    port=22,
    username='your_username',
    password='your_password'
)

# 执行命令
stdin, stdout, stderr = ssh.exec_command('ls -l')

# 输出结果
print(stdout.read().decode())

# 关闭连接
ssh.close()

2.2 密钥认证连接

import paramiko

# 使用私钥文件连接
private_key = paramiko.RSAKey.from_private_key_file('/path/to/private_key')

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(
    hostname='example.com',
    username='your_username',
    pkey=private_key
)

# 执行命令示例
stdin, stdout, stderr = ssh.exec_command('df -h')
print(stdout.read().decode())

ssh.close()

3. SFTP 文件传输

import paramiko

# 建立SSH连接
transport = paramiko.Transport(('example.com', 22))
transport.connect(username='your_username', password='your_password')

# 创建SFTP客户端
sftp = paramiko.SFTPClient.from_transport(transport)

# 上传文件
sftp.put('/local/path/file.txt', '/remote/path/file.txt')

# 下载文件
sftp.get('/remote/path/file.txt', '/local/path/file.txt')

# 列出目录内容
files = sftp.listdir('/remote/path')
print(files)

# 关闭连接
sftp.close()
transport.close()

4. 高级功能

4.1 交互式会话

import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('example.com', username='user', password='pass')

# 获取交互式shell
channel = ssh.invoke_shell()
channel.send('ls -l\n')
while True:
    if channel.recv_ready():
        output = channel.recv(1024).decode()
        print(output)
    else:
        break

ssh.close()

4.2 端口转发

import paramiko

# 本地端口转发(将远程服务器的3306端口映射到本地的3307端口)
transport = paramiko.Transport(('example.com', 22))
transport.connect(username='user', password='pass')

# 创建端口转发
transport.request_port_forward('localhost', 3307, ('localhost', 3306))

# 现在可以通过localhost:3307访问远程服务器的3306端口

5. 安全注意事项

  1. 主机密钥验证:生产环境不应使用AutoAddPolicy,而应使用:

    ssh.load_system_host_keys()
    ssh.set_missing_host_key_policy(paramiko.RejectPolicy())
    
  2. 密码安全:不要在代码中硬编码密码,考虑使用环境变量或配置文件

  3. 连接超时:建议设置连接超时

    ssh.connect(..., timeout=10)
    
  4. 资源清理:始终确保连接被正确关闭,可以使用with语句:

    with paramiko.SSHClient() as ssh:
        ssh.connect(...)
        # 操作代码
    

6. 常见问题解决

问题1paramiko.ssh_exception.SSHException: Error reading SSH protocol banner

解决:增加连接超时时间

ssh.connect(..., timeout=20)

问题2paramiko.ssh_exception.NoValidConnectionsError

解决:检查主机地址和端口是否正确,确保网络可达

问题3:认证失败

解决

  • 检查用户名和密码/密钥是否正确
  • 确保服务器允许该认证方式
  • 对于密钥认证,确保私钥文件权限正确(通常应为600)

希望这个教程能帮助你开始使用Paramiko进行SSH操作!

// 来源:https://www.nzw6.comImage

1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!cheeksyu@vip.qq.com
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有积分奖励和额外收入!
5.严禁将资源用于任何违法犯罪行为,不得违反国家法律,否则责任自负,一切法律责任与本站无关