Python自动登录
我使用此代码通过ssh进行通信 但我的问题是,我必须写入ssh密码。我知道我可以使用Python自动登录,python,ssh,Python,Ssh,我使用此代码通过ssh进行通信 但我的问题是,我必须写入ssh密码。我知道我可以使用plink,它可以处理密码,但我想用这种方式解决它。 如果我写入密码,“ls”、“uname”等命令将正常运行 是否可以在无需用户交互的情况下自动填写密码 import subprocess import sys HOST="127.0.0.1" ssh = subprocess.Popen(["ssh", "%s" % HOST],
plink
,它可以处理密码,但我想用这种方式解决它。
如果我写入密码,“ls”、“uname”等命令将正常运行
是否可以在无需用户交互的情况下自动填写密码
import subprocess
import sys
HOST="127.0.0.1"
ssh = subprocess.Popen(["ssh",
"%s" % HOST],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
universal_newlines=True,
bufsize=0)
# send ssh commands to stdin
ssh.stdin.write("ls .\n")
ssh.stdin.write("uname -a\n")
ssh.stdin.write("uptime\n")
ssh.stdin.close()
# fetch output
for line in ssh.stdout:
print(line),
是否有任何理由不想将ssh配置为使用密钥?您所问的是混乱的,因为密钥通常是通往GO的途径,您缺少一个
ssh.stdin.wait()
。从理论上讲,添加ssh.stdin.write(“您的密码”)
也应该有效。我对等待输入的进程做了完全相同的事情。正如@camelcc所说的,如果可能的话,使用ssh密钥。否则,您可能会失去对远程计算机的访问权限,或者更糟的是,您的远程计算机受到感染,这使得与它的连接非常不安全。您是否考虑过类似的情况?我认为,如果您反对使用密钥,可以将其配置为从环境变量/config文件读取密码。不过,键是更好的方法。您可以使用sshpass
。注意此方法涉及的安全风险(类似于的)。