scp 在命令行上使用密码

spi*_*epf 1 ssh password cygwin scp

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

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

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

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

kas*_*erd 5

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

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

工作有几个先决条件SSH_ASKPASS

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

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

作为最后的手段,如果上述方法都不起作用,您需要将ssh命令包装在一个脚本中,该脚本伪造一个 tty 并通过它提供密码。我曾经expect做到了这一点。