我需要运行一个Python脚本,它将从用户那里获取密码并使用SSH登录到特定的框中。
password = getpass.getpass('password:')
...
...
command='ssh' + ' ' + "IPname"
p = subprocess.Popen(command,shell=True,stdout=PIPE).communicate(password)[0]
但上面的脚本无效,仍在寻找密码。
答案 0 :(得分:2)
像这样使用paramiko,因为你不能对子进程使用密码认证,你必须创建和别名并执行ssh somealias
。 Paramiko可以在不设置别名的情况下轻松进行身份验证:
password = getpass.getpass()
ssh = paramiko.SSHClient(
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('some.host.com', username=username, password=password)
或者您也可以将公钥与paramiko一起使用:
pathToKey = "/some/path/here"
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('some.host.com', username=username, key_filename=pathToKey)