SSH密钥与密码,与钥匙串
钥匙链是一个小工具,其管理以您的名义ssh-agent和允许的ssh-agent保持运行的登录会话结束时。在后续登录中,钥匙串将连接到现有的ssh-agent实例。实际上,这意味着必须在重新启动后首次登录时输入密码。在后续登录中,将使用来自现有ssh-agent实例的未加密密钥。这对于允许无密码ssh密钥的cron作业中的无密码RSA/DSA身份验证也很有用。
要启用钥匙串,请安装钥匙串并在〜/中添加如下内容。bash_profile:
eval keychain --agents ssh --eval id_rsa
从安全角度来看,ssh-ident和keychain比ssh-agent实例更受限于特定会话的生命周期,但它们提供了高级别的便利。为了提高钥匙串的安全性,有些人在他们的〜/ .bash_profile钥匙串调用中加入了--clear选项。通过这样做,必须在登录时重新输入密码,但在用户注销后,cron作业仍然可以访问未加密的密钥。钥匙串wiki页面包含更多信息和示例。
收到此信息;
https://unix.stackexchange.com/questions/90853/how-can-i-run-ssh-add-automatically-without-password-prompt
希望这有助于
我个人能够在终端启动自动输入我的密码通过执行此操作:(你当然可以,修改脚本,它适合你的需要)
编辑bashrc文件以添加此脚本;
检查SSH代理清醒
如果[-z “$ SSH_AUTH_SOCK”];然后 EXEC的ssh-agent的bash -c “SSH-增加; $ 0” 回声 “的SSH代理被惊醒” 退出 网络
上面一行将开始在终端推出的预期脚本。
./ssh.exp
这里有此内容的expect脚本
#!/usr/bin/expect
set timeout 20
set passphrase "test"
spawn "./keyadding.sh"
expect "Enter passphrase for /the/path/of/yourkey_id_rsa:"
send "$passphrase\r";
interact
这里是我的keyadding.sh脚本的内容(你必须把两个脚本在你的主文件夹,一般是/ home/user中)
#!/bin/bash
ssh-add /the/path/of/yourkey_id_rsa
exit 0
我会强烈建议加密PA在.exp脚本中使用ssword,以及将这个.exp文件重命名为term_boot.exp或任何其他用于安全目的的文件。不要忘记使用nano或vim直接从终端创建文件(例如:nano ~/.bashrc | nano term_boot.exp
)以及chmod +x script.sh
以使其可执行。 A chmod +r term_boot.exp
也是有用的,但是你必须在你的bashrc文件中的./ssh.exp之前添加sudo。因此,每次启动终端时,您都必须输入您的sudo密码。对我来说,这比密码更方便,因为我记得炉旁的管理员(sudo)密码。
此外,这是另一种方式来做到这一点,我认为; https://www.cyberciti.biz/faq/noninteractive-shell-script-ssh-password-provider/
当我有时间的时候,肯定会改变我的这个方法。
我们应该停止推广期望作为自动化ssh的方式。 Ssh故意使这些提示很难自动化,以推动我们使用正确的解决方案:命令行标志绕过确认和公钥/私钥以消除密码提示。 – 2016-05-13 14:40:45
这很理想,但现实世界往往不理想。对于这个问题,这是通常的做法。如果您使用了密钥,那么您可能也需要在密钥上输入密码,然后您可能会遇到同样的情况。当然,你可以使用'ssh-agent','keychain'等,但有时候会有不便或不切实际的原因。 – jjlin 2016-05-17 00:42:24