Python:Paramiko模块

文摘   2024-09-14 07:30   内蒙古  

「目录」

  • 主要应用

    • SSH连接

    • 远程命令执行

    • 文件传输

    • SFTP支持

    • 端口转发

    • SSH密钥管理

    • SSH代理

  • 综合应用


Paramiko 是一个用于在 Python 中实现 SSH 协议的模块,它提供了一个简单而强大的接口,用于在远程服务器上执行命令、上传和下载文件等操作。以下是 Paramiko 模块的一些主要应用:

主要应用

  1. 「SSH 连接」:Paramiko 可以用于建立 SSH 连接到远程服务器,这使得您可以通过 Python 脚本执行远程命令。

  2. 「远程命令执行」:通过 Paramiko,您可以在远程服务器上执行命令,并获取输出。这对于自动化任务、监控和管理远程服务器非常有用。

  3. 「文件传输」:Paramiko 允许您在本地计算机和远程服务器之间传输文件,包括上传和下载文件。这对于备份、同步文件和部署应用程序非常方便。

  4. 「SFTP 支持」:Paramiko 提供了对 SFTP(SSH 文件传输协议)的支持,允许您通过安全的方式传输文件。

  5. 「端口转发」:Paramiko 可以用于设置端口转发,将本地端口映射到远程服务器,以便安全地访问远程服务。

  6. 「SSH 密钥管理」:Paramiko 可以帮助您管理 SSH 密钥,包括生成密钥对、添加公钥到远程服务器等操作。

  7. 「SSH 代理」:Paramiko 支持通过 SSH 代理服务器进行连接,这在某些网络环境下是非常有用的。
    以下是使用 Paramiko 模块实现各种功能的示例代码:

SSH连接

import paramiko

# 创建 SSH 客户端
client = paramiko.SSHClient()

# 允许连接不在 known_hosts 文件中的主机
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 连接到远程主机
client.connect('hostname', username='username', password='password')

# 连接成功后可以执行其他操作

# 关闭连接
client.close()

远程命令执行

# 在SSH连接的基础上执行远程命令
stdin, stdout, stderr = client.exec_command('ls -l')
for line in stdout:
    print(line.strip())

文件传输

# 使用 SFTP 进行文件传输
sftp = client.open_sftp()
sftp.put('local_file.txt''remote_file.txt')  # 上传文件
sftp.get('remote_file.txt''local_file.txt')  # 下载文件
sftp.close()

SFTP支持

# 使用 Paramiko 的 SFTPClient 类
transport = paramiko.Transport(('hostname'22))
transport.connect(username='username', password='password')
sftp = paramiko.SFTPClient.from_transport(transport)

# 在此执行 SFTP 操作

sftp.close()
transport.close()

端口转发

# 设置端口转发
client.get_transport().request_port_forward(''12345)

SSH密钥管理

# 生成 SSH 密钥对
key = paramiko.RSAKey.generate(2048)

# 添加公钥到远程服务器
client.exec_command('echo "{}" >> ~/.ssh/authorized_keys'.format(key.get_base64()))

SSH代理

# 使用 SSH 代理
proxy = paramiko.ProxyCommand('ssh -q -W %s:%s %s' % (host, port, proxy_host))
client.connect('hostname', username='username', password='password', sock=proxy)

综合应用

建立 SSH 连接,执行远程命令,传输文件,使用 SFTP,设置端口转发,管理 SSH 密钥并通过 SSH 代理连接:

import paramiko

# SSH连接
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect('hostname', username='username', password='password')

# 远程命令执行
stdin, stdout, stderr = client.exec_command('ls -l')
print("Remote command output:")
for line in stdout:
    print(line.strip())

# 文件传输
sftp = client.open_sftp()
sftp.put('local_file.txt''remote_file.txt')  # 上传文件
sftp.get('remote_file.txt''local_file.txt')  # 下载文件

# SFTP支持
transport = paramiko.Transport(('hostname'22))
transport.connect(username='username', password='password')
sftp = paramiko.SFTPClient.from_transport(transport)

# 端口转发
client.get_transport().request_port_forward(''12345)

# SSH密钥管理
key = paramiko.RSAKey.generate(2048)
client.exec_command('echo "{}" >> ~/.ssh/authorized_keys'.format(key.get_base64()))

# SSH代理
proxy = paramiko.ProxyCommand('ssh -q -W %s:%s %s' % (host, port, proxy_host))
client.connect('hostname', username='username', password='password', sock=proxy)

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


兄弟嵌入式
从入门到精通,学习并分享嵌入式软、硬件的知识。
 最新文章