Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python自动登录_Python_Ssh - Fatal编程技术网

Python自动登录

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],

我使用此代码通过ssh进行通信

但我的问题是,我必须写入ssh密码。我知道我可以使用
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
。注意此方法涉及的安全风险(类似于的)。