【发布时间】:2017-08-06 12:06:54
【问题描述】:
我在 Python 2.7.6 中使用了subprocess 模块来建立 SSH。我意识到不建议这样做,但我无法安装其他 Python SSH 库,例如 paramiko 和 fabric。
我只是想知道是否有人不介意告诉我现在该怎么做
sshProcess = subprocess.call(['ssh', '-t', '<REMOTE>', 'ssh', '<REMOTE>'])
我想用子进程方法在REMOTE 中执行命令。有没有办法做到这一点?不幸的是,REMOTE 受用户手动输入的密码保护。如果有帮助,我正在运行 Windows 10 Bash shell。
感谢任何帮助。
【问题讨论】:
-
至少,您应该区分
<REMOTE>和<COMMAND>。你如何构建COMMAND也很重要——如果你用变量代替而不是运行一个常量命令,那么就会出现安全问题。 -
...你的标题说你的问题是“如何传递命令”,但目前唯一明显你不知道如何做的部分是传递密码。您正在尝试做什么:形成要运行的远程命令,以及它是如何失败的,这很重要。
-
您的 Python 程序是否在用户所在的 TTY 上运行并能够以交互方式输入密码也很重要。
-
@CharlesDuffy 感谢您的回复。是的,用户正在交互输入密码。我才意识到我的问题措辞很糟糕。基本上,我能够很好地建立连接。但是现在我试图在用户输入他们的身份验证详细信息后自动将命令传递到该 ssh。
-
一种选择是为用户设置无密码登录,这样就不需要密码。这是通过在客户端生成密钥然后在服务器上更新密钥来完成的。对于 unixy 系统,这是通过
ssh-keygen和ssh-copy-id完成的,但您必须弄清楚您的ssh客户端是如何做到的。
标签: python bash ssh subprocess