我有一个使用密码保护的 SSH 密钥的服务器进程。目前,我每次登录时都会通过 SSH 提供密钥过程重新启动。我这样做:
eval `ssh-agent`
ssh-add mykey
# Enter passphrase
# start my server process
我想改变这个过程,这样在服务器重启后我只需要输入一次 SSH 密码。然后该服务器上某个 UNIX 用户的所有进程都可以访问该密钥,直到服务器再次重启。
我该如何设置这样的设置?还有其他想法可以让这个过程更顺利吗?
Ubuntu 服务器 12.04。
答案1
那么,您希望该服务器上的某个 UNIX 用户仅输入一次 SSH 密码,并且希望该 SSH 密码在服务器再次重启之前一直有效,对吗?还有什么其他要求吗?
如果没有更多的话,那么 Keychain 就是您的答案。
Keychain 是一个 OpenSSH 密钥管理器,通常从 ~/.bash_profile 运行。运行 keychain 时,它会检查是否有正在运行的 ssh-agent,否则会启动一个。它会将 ssh-agent 环境变量保存到 ~/.keychain/\${HOSTNAME}-sh,以便后续登录和非交互式 shell(如 cron 作业)可以获取该文件并建立无密码 ssh 连接。此外,运行 keychain 时,它会验证命令行上指定的密钥文件是否为 ssh-agent 所知,否则会加载这些文件,并在必要时提示您输入密码。
有了 Keychain,我只需要在重启机器后输入一次 SSH 密码即可。