我正在尝试访问远程计算机以执行远程Python脚本(remote_test.py
)。
我更改了SSH配置,这样如果我从主机终端输入ssh user@ip
,它就会连接到远程系统,而不会要求输入密码。
当我在主机上运行Python脚本以在这样的子进程调用中使用SSH执行remote_test.py
时:
P = subprocess.Popen(
[
"ssh",
"user@some_ip",
"sudo",
"python",
"/home/path/remote_test.py",
],
shell=False,
stdout=subprocess.PIPE
)
要求我输入密码。
如何在不输入密码的情况下访问远程计算机?
环境:
答案 0 :(得分:1)
您不应该使用Popen
来运行程序ssh
,而是使用像优秀paramiko
这样的库来运行ssh命令。它有一个记录的API,用于使用公钥进行连接,这将在下面讨论:How to ssh connect through python Paramiko with public key
然后你就可以做到这样的事情:
import paramiko
ssh = paramiko.SSHClient()
ssh.connect('some_ip', username='user', key_filename='keyfile')
stdin, stdout, stderr = ssh.exec_command('sudo python /home/path/remote_test.py')