我正在编写一个脚本,该脚本允许我一次从所有服务器检索文件。我已准备好 SSH 密钥,以便登录我的服务器。但我的 SSH 密钥需要密码。
我编写的脚本不会自动运行,只能手动运行。因此我的脚本会提示用户输入 SSH 密钥密码。
当 SSH 密钥连接到每个服务器时,如何将密码发送到该密钥?我试图避免必须为每个服务器输入密码。
我知道我可以使用“expect”,但我希望有一种简单的方法可以做到这一点。也许是一些环境变量?
谢谢。
答案1
为什么不使用ssh-agent
它呢?
请参阅手册页了解更多详细信息。:)
答案2
我会使用没有密码的 SSH 密钥。这可能不太安全,但任何允许无人值守使用的方法都会有同样的缺陷。
答案3
以下是我的看法!
- 我有一个一直随身携带的 USB 驱动器(在我的实体钥匙链中)。
- 我在其中创建了第二个 5 MB 大小的分区。此分区是加密的 ext4 分区。
- 我将我的私钥(没有密码)存储在该加密分区中。
- 在我的计算机中,我将解密此分区的密码存储在文件管理器中(我使用海豚),因此如果我插入 USB 驱动器,我可以通过两次单击来挂载加密分区,如果我将 USB 驱动器插入另一台计算机,我可以输入密码来挂载它。
- 同样,在我的电脑中,我将我的私钥从通常所在的位置 (~/.ssh/id_rsa) 符号链接到使用 USB 驱动器安装时的位置。因此,一旦安装完毕,我就可以进行常规 ssh 而无需密码。
- 如果我在另一台计算机上,我可以使用 -i 标志告诉 ssh 我的密钥在哪里
这样我就可以:
- 从我日常使用的电脑上轻松登录
- 从任何 Linux 机器上使用单一密码登录
- 确保我的私钥始终安全地保存在我身边并存储在加密的文件系统中
答案4
最简单的解决方案是安装包sshpass
并像这样使用它:sshpass -p password ssh -i keyfile.pem user@server