You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python脚本自动输入SSH密码实现服务器自动登录?

解决SSH自动登录脚本的密码输入问题

方法1:SSH密钥登录(推荐,安全无密码)

这是最安全可靠的方案,彻底规避密码输入环节:

  1. 本地生成SSH密钥对:
    ssh-keygen -t rsa
    
    全程回车使用默认配置,生成的私钥id_rsa和公钥id_rsa.pub会保存在~/.ssh目录下。
  2. 将公钥上传至目标服务器:
    ssh-copy-id root@address
    
    首次执行需手动输入一次密码,后续即可实现无密码登录。
  3. 脚本中用subprocess调用SSH(比os.system更灵活可控):
    import subprocess
    subprocess.run(["ssh", "root@address"])
    

方法2:用sshpass传递密码(适合临时场景,注意安全风险)

如果必须使用密码登录,可借助sshpass工具自动填充密码,需先安装该工具(Ubuntu:sudo apt install sshpass;CentOS:yum install sshpass):

import subprocess
password = "你的服务器密码"
subprocess.run(["sshpass", "-p", password, "ssh", "root@address"])

⚠️ 注意:这种方式密码会明文暴露在进程列表中,存在安全隐患,不建议在生产环境使用。

方法3:用paramiko库(纯Python实现)

借助专门的SSH开发库paramiko,无需依赖外部工具,更适配Python脚本集成:

  1. 先安装库:
    pip install paramiko
    
  2. 基础登录与命令执行示例:
    import paramiko
    
    ssh = paramiko.SSHClient()
    # 自动添加未知主机密钥(生产环境建议手动配置known_hosts文件)
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect("address", username="root", password="你的服务器密码")
    
    # 执行服务器命令并获取输出
    stdin, stdout, stderr = ssh.exec_command("ls -l")
    print(stdout.read().decode())
    
    # 关闭连接
    ssh.close()
    
    若需维持交互式会话,可使用invoke_shell()方法:
    shell = ssh.invoke_shell()
    shell.send("whoami\n")
    print(shell.recv(1024).decode())
    

内容的提问来源于stack exchange,提问作者Merlin Wolff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 00:02:24