在面对此问题时,如何ssh
使用Popen
时默认回答“是”?
The authenticity of host '`XXXXX`' can't be established.
ECDSA key fingerprint is SHA256:LA2RqbdzD8Uxgi36KWOM12giS9T+ceOQYhYjVKReMks.
Are you sure you want to continue connecting (yes/no)?
这就是我正在尝试的
for IP in ['10.32.253.250']:
remoteCall = subprocess.Popen(["ssh", "co_user@"+IP, "sudo svstat /etc/sv/nagios_CheckDisk_Alertz_daemon",], stdout=subprocess.PIPE, stderr=subprocess.PIPE);
Response, err = remoteCall.communicate()
if(re.search("authenticity of host", Response)):
stdin.write('yes')
print IP + " " +Response
答案 0 :(得分:0)
不确定子进程是如何做到的,接下来是另一种方式,可能对你有所帮助。 FYI。
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect("192.168.1.6", 22, "username", "password")
stdin, stdout, stderr = ssh.exec_command('ls') // your command here
content = stdout.readlines()
print content
ssh.close()
答案 1 :(得分:-3)
从手册页:
StrictHostKeyChecking
如果此标志设置为“yes”,则ssh(1)将永远不会自动添加主机 〜/ .ssh / known_hosts文件的密钥,并拒绝连接到主机 其主机密钥已更改。这提供了最大程度的保护 特洛伊木马攻击,虽然它可以令人讨厌 / etc / ssh / ssh_known_hosts文件维护不当或连接时 经常制作新主机。此选项强制用户执行此操作 手动添加所有新主机。如果此标志设置为“no”,则ssh将 自动将新主机密钥添加到用户已知主机文件。如果这 flag设置为“ask”,新的主机密钥将被添加到已知的用户 只有在用户确认这是他们真正的东西后才能托管文件 我想做什么,而ssh会
您可以将StrictHostKeyChecking设置为" no"如果你想让ssh / scp在没有提示的情况下自动接受新密钥。在命令行上:
scp -o StrictHostKeyChecking=no ...
您还可以启用批处理模式:
BatchMode
如果设置为“yes”,将禁用密码/密码查询。这个 选项在脚本和其他没有用户的批处理作业中很有用 提供密码。论证必须是“是”或“否”。 默认值为“no”。使用BatchMode = yes,ssh / scp将失败而不是 提示(这通常是对脚本的改进)。