Python SSH 连接并执行命令

在这个教学示例中,我们将使用 paramiko 库通过 SSH 连接到远程服务器并执行命令。为了方便演示,我们将 IP 地址、用户名和密码硬编码在代码中。请注意,这种做法在实际应用中并不安全,通常建议使用环境变量或配置文件来存储敏感信息。

1. 安装 paramiko

首先,确保你已经安装了 paramiko 库。可以使用以下命令进行安装:

pip install paramiko

2. 示例代码

以下是一个简单的示例代码,其中包含硬编码的 IP 地址、用户名和密码。

import paramiko

def ssh_execute_command():
    """通过 SSH 连接并执行命令"""
    host = "192.168.1.100"  # 替换为目标主机的 IP 地址
    port = 22  # SSH 默认端口
    username = "your_username"  # 替换为目标主机的用户名
    password = "your_password"  # 替换为目标主机的密码
    command = "ls -l"  # 要执行的命令

    try:
        # 创建 SSH 客户端
        client = paramiko.SSHClient()
        # 自动添加主机密钥
        client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        # 连接到远程主机
        client.connect(hostname=host, port=port, username=username, password=password)

        # 执行命令
        stdin, stdout, stderr = client.exec_command(command)
        
        # 获取命令输出
        output = stdout.read().decode()
        error = stderr.read().decode()

        # 打印输出
        if output:
            print("命令输出:")
            print(output)
        if error:
            print("命令错误:")
            print(error)

    except Exception as e:
        print(f"连接失败: {e}")
    finally:
        # 关闭连接
        client.close()

if __name__ == "__main__":
    ssh_execute_command()

3. 代码解析

  • 导入模块:我们导入 paramiko 库来处理 SSH 连接。
  • 硬编码的敏感信息
    • host:目标主机的 IP 地址(例如 192.168.1.100)。
    • username:目标主机的用户名(例如 your_username)。
    • password:目标主机的密码(例如 your_password)。
  • 执行命令:在 command 变量中定义了要执行的命令(在此示例中为 ls -l)。
  • 创建 SSH 客户端:使用 paramiko.SSHClient() 创建一个 SSH 客户端实例。
  • 设置主机密钥策略:使用 set_missing_host_key_policy 方法自动添加主机密钥。
  • 连接到远程主机:使用 connect 方法连接到指定的主机。
  • 执行命令:使用 exec_command 方法执行指定的命令,并获取标准输入、输出和错误。
  • 获取输出:读取标准输出和标准错误,并打印结果。
  • 关闭连接:在 finally 块中确保关闭 SSH 连接。

4. 运行程序

将上述代码复制到 Python 环境中运行。输入目标主机的 IP 地址、用户名和密码,程序将连接到远程服务器并执行命令。

5. 注意事项

  • 安全风险:将敏感信息硬编码在代码中会导致安全风险,尤其是在代码共享或版本控制时。建议在实际应用中使用更安全的方式来管理敏感信息。
  • 防火墙:确保远程主机的防火墙允许 SSH 连接。
  • 合法性:确保在合法和授权的情况下进行远程连接,避免侵犯他人网络安全。

6. 总结

通过这个教学示例,你已经学会了如何使用 Python 通过 SSH 连接到远程服务器并执行命令。虽然在示例中使用了硬编码的敏感信息,但在实际应用中,强烈建议使用更安全的方式来管理这些信息。希望这个示例能帮助你理解如何使用 paramiko 库进行 SSH 操作。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐