scp在命令行上使用密码

我正在尝试编写一个脚本,将在我的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。
  • 服务器必须支持密码authentication。

我在尝试使用embedded式系统进行上述操作时碰到的一个问题是一个不支持密码validation的ssh服务器。 相反,它使用键盘交互,但configuration的方式使它看起来像密码authentication。

作为最后的手段,如果没有上述工作,你需要将ssh命令包装在一个脚本中,该脚本伪装一个tty并通过该脚本提供密码。 我用expect实现这一点。