![在 bash 中运行 ssh-add,并使用密钥和密码作为参数](https://linux22.com/image/793238/%E5%9C%A8%20bash%20%E4%B8%AD%E8%BF%90%E8%A1%8C%20ssh-add%EF%BC%8C%E5%B9%B6%E4%BD%BF%E7%94%A8%E5%AF%86%E9%92%A5%E5%92%8C%E5%AF%86%E7%A0%81%E4%BD%9C%E4%B8%BA%E5%8F%82%E6%95%B0.png)
我正在努力奔跑ssh 添加通过 Alma9 服务器上的 bash 脚本进行限制。RSA 密钥 4096 位于 SMB 共享上,因此文件的权限已损坏,并且密钥受密码保护。
由于该文件来自 Windows 共享,因此我无法直接更改权限。因此ssh 添加不会允许的。
我尝试了一些方法来解决这个问题,我发现了一些有用的页面。 https://stackoverflow.com/questions/46253162/add-ssh-key-from-variable
这有帮助,但我需要还添加密码
所以就像
ssh-add - <<< "${SSH_PRIVATE_KEY}" < add ${PASS}
expect
我曾尝试在脚本中使用:https://stackoverflow.com/questions/4780893/use-expect-in-a-bash-script-to-provide-a-password-to-an-ssh-command
但答案如下:
eval(`ssh-agent`)
/usr/bin/expect
spawn ssh-add
expect "Enter passphrase for /root/.ssh/id_rsa:"
send "my_pass"
interact
但我需要将密钥输入ssh 添加并在需要时添加密码。
要么我被打倒,<<<
要么引用
{ sleep .1; echo PASS; } | script -q /dev/null -c 'ssh-add - <<< "${SSH_PRIVATE_KEY}"'
这就是引用出现问题的地方。
这很令人沮丧,因为我可以让 A 和 B 或 B 和 C 部分工作,但我需要 A 和 B 和 C,这样我才能输入密钥和密码ssh-add
,然后才能使用ssh-agent
共享密钥。
所以我正在寻求帮助。我一直在关注许多网站,希望找到一个有用的解决方案。
谢谢 R。