【问题标题】:How can i input password from bash script?如何从 bash 脚本输入密码?
【发布时间】:2018-07-07 06:09:33
【问题描述】:

我正在创建一个尝试连接到远程服务器的 bash 脚本,但它需要输入密码,我编写了以下脚本:

ssh 主机IP 期待“密码:” 发送“密码”

但它会连接并提供“user@HostIP 的密码:”,因此发送命令不会将任何密码写入屏幕......我应该怎么做才能让它工作?

【问题讨论】:

  • 我认为您应该在您的机器上生成一个 RSA (id_rsa) 并将您的公钥发布到您的服务器 (id_rsa.pub)。这将避免您向服务器提供明文密码。
  • @Newmips,我想我也在回答中解释了同样的事情 :) 让我们看看 OP 对此做了什么,干杯。

标签: linux bash ssh


【解决方案1】:

在文件或脚本中写入密码从来都不是一个好习惯。为什么不尝试从一台服务器到另一台服务器的无密码身份验证。

简单的步骤:

我 - 从命令 ssh -keygen -t rsa 生成 RSA 公钥和私钥到您的 server1。

II- 现在在您的另一台服务器 (server2) 的主目录中创建具有正确权限的 .ssh 目录。

III- 在 server2 上创建名为 authorized_keys 的文件。

IV- 在 server2 上打开名为 authorized_keys 的文件并将名为 id_rsa.pub 的文件从 server1 复制到 server2。

V- 现在将权限设置为 640 到 ~/.ssh/authorized_keys。

VI- 现在尝试登录到 server2:

ssh user@server2

这是一个很好的链接,它也可以告诉你同样的事情。

https://www.tecmint.com/ssh-passwordless-login-using-ssh-keygen-in-5-easy-steps/

一旦使用 ssh 从 server1 设置到 server2 的无密码身份验证,您就可以简单地执行脚本中要在另一台服务器上运行的所有 ssh 命令。

【讨论】:

    【解决方案2】:

    您可以使用 sshpass 来做到这一点,例如:

    sshpass -p **your_password**  ssh user@HostIP
    

    如果尚未安装 sshpass,您可以安装它并在 bash 控制台中进行第一次连接以获取“是确认”

    【讨论】:

    猜你喜欢
    • 2012-05-17
    • 2018-12-30
    • 2011-02-08
    • 2019-11-02
    • 2018-07-05
    • 1970-01-01
    • 2017-07-05
    • 2012-11-18
    相关资源
    最近更新 更多