在命令行上使用密码进行 scp

在命令行上使用密码进行 scp

我正在尝试编写一个脚本,将在我的台式机(windows/cygwin)上创建的版本部署到我的测试环境(linux)中的一台机器上。

我想使用 scp 将构建复制到目标机器。目标机器上的唯一帐户是 root,我无法为此任务创建特殊用户。root 用户无法使用 ssh 密钥登录(我怀疑这是在 ssh 服务器上配置的,但我不知道哪些配置选项控制这一点)。无论如何,我无法更改 ssh 服务器的配置。

我的台式机使用 Cygwin,并且安装了 ssh。我需要的是命令行功能,它允许我在命令行上输入密码。

我知道在 shell 脚本中使用纯文本密码的危险,但这不是这里需要担心的问题。

答案1

在我看来,最好的办法是使用某种预期脚本。我通常使用的在这样的命令中输入密码的技巧在我的 Cygwin 安装中不起作用。

答案2

我建议为此使用 ssh 密钥。如果您可以以 root 身份登录,您还可以更改 ssh 服务器的配置。

作为下一个选项,您可以设置SSH_ASKPASS环境变量来指向您编写的脚本,该脚本只需在标准输出上输出密码。

SSH_ASKPASS要工作,有几个先决条件:

  • ssh命令不能访问 tty。
  • ssh命令必须认为它可以访问 X 服务器。设置必要的环境变量就足够了,即使它们指向的 X 服务器不存在。
  • 服务器必须支持密码验证。

当我尝试使用嵌入式系统执行上述操作时,我遇到的一个问题是 ssh 服务器不支持密码验证。相反,它使用键盘交互,但配置方式使其看起来像密码验证。

如果以上方法都不起作用,那么作为最后的手段,您需要将ssh命令包装在脚本中,该脚本会伪造一个 tty 并通过该脚本输入密码。我曾经expect这样做过。

相关内容