繁体   English   中英

使用python的ssh(没有paramiko和fabric)

[英]ssh using python(without paramiko and fabric)

我需要编写python脚本来从一个服务器到另一个服务器进行ssh登录。 不幸的是,这些服务器没有任何互联网连接,我无法下载软件包。 我已经使用python子进程编写了以下代码,但是一旦执行ssh命令,stdin.write将不会输入密码。 我也尝试了p.communicate,但无济于事。 请在不使用paramiko或fabric的情况下帮助我将此脚本转换为ssh。

cmd = "ssh root@17.10.14.243"
p = subprocess.Popen(cmd, stdin = subprocess.PIPE, stdout =  subprocess.PIPE, stderr =  subprocess.PIPE, bufsize = 1,shell = True)
p.stdin.write("Pass")

我希望这不是您的真实密码!

ssh不会从stdin读取密码,因此使用p.communicate或其他各种写操作将无法正常工作。

如果总是这两台机器,则可以确保它们都具有ssh身份,然后制作一个authorized_keys文件。 如果在使用ssh-keygen创建ssh身份时未设置密码,并且该密钥在另一个user @ host的authorized_keys文件中,那么您将无需密码即可进入:

ssh-keygen -t rsa 
ssh-copy-id user@other-host 

如果系统上不存在ssh-copy-id$HOME/.ssh/id_rsa.pub$HOME/.ssh/id_rsa.pub放入另一台主机的$HOME/.ssh/authorized_keys文件中(该文件可以具有多个条目)

如果您的系统上已经安装了ssh-askpass ,也可以使用。 如果ssh在没有连接终端的情况下运行,则将SSH_ASKPASS环境变量设置为脚本名称将运行该脚本以获取要使用的密码。 因此,如果/path/to/myscript打印出mypassword ,则在没有可用终端时, export SSH_ASKPASS=/path/to/myscript将使用mypassword

这两个选项都有其安全性问题,因此取决于您所拥有的环境以及您最担心的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM