我正在尝试编写一个脚本,将在我的testing环境(linux)中将在我的台式机(windows / cygwin)上创build的构build部署到机器上。
我想使用scp将构build版本复制到目标机器上。 目标计算机上唯一的帐户是root,并且我无法为此任务创build特殊用户。 root用户无法使用ssh密钥login(我怀疑这是在ssh服务器上configuration的,但我不知道哪个configuration选项可以控制这个选项)。 无论如何,我不能改变SSH服务器的configuration。
我的台式机使用Cygwin,我已经安装了ssh。 我需要的是命令行fu,这将允许我把密码放在命令行上。
我意识到在shell脚本中有一个明文密码的危险,但这不是一个问题。
国际海事组织,你最好的select是使用某种期望的脚本。 我通常在这样的命令中input密码的技巧在我的Cygwin安装中不起作用。
我build议为此使用一个ssh密钥。 如果您可以以root身份login,则还可以更改ssh服务器的configuration。
作为下一个选项,您可以将SSH_ASKPASS环境variables设置为指向您编写的脚本,该脚本只需输出stdout上的密码即可。
有一些SSH_ASKPASS工作的先决条件:
ssh命令不能访问tty。 ssh命令必须认为它可以访问X服务器。 即使指向的X服务器不存在,也必须设置必要的环境variables。 我在尝试使用embedded式系统进行上述操作时碰到的一个问题是一个不支持密码validation的ssh服务器。 相反,它使用键盘交互,但configuration的方式使它看起来像密码authentication。
作为最后的手段,如果没有上述工作,你需要将ssh命令包装在一个脚本中,该脚本伪装一个tty并通过该脚本提供密码。 我用expect实现这一点。