我希望计算机像选美一样,在启动时显示 SSH 密码提示。我的私钥存储在 3 台计算机之间的 Dropbox 中,其中 1 台现在是 Ubuntu。
我用谷歌搜索了两个小时并询问了其他人,但大多数人根本不使用私钥或使用没有密码的私钥,因此不需要这样的东西。然而,我在多个位置使用相同的私钥并每年更新它。它必须受密码保护,因为它位于多个位置以及我的 Dropbox 上。
我找到了 Seahorse,虽然我不确定它是否能实现我想要的功能,但在导入导出到 OpenSSH 的 PuTTy 密钥时,它会在新安装的 Ubuntu 上出现分段错误。
答案1
答案2
您应该检查两件事:
如果您正在使用最新的 Linux 发行版(例如 ubuntu),那么您的系统上应该已经运行了与 ssh-agent 兼容的密钥管理器。打开 shell(在 X11 下)并检查
SSH_AUTH_SOCK
环境变量的值。如果是这样的话/tmp/keyring-WEuO6X/ssh
,你正在跑步侏儒钥匙圈。如果是这样/tmp/ssh-XXXXXXXXXX/agent.<ppid>
,那么你正在跑步ssh代理等等。如果它为空,则表明没有运行密钥管理器。我想您将密钥存储在非默认目录中(即不在 下
~/.ssh
)。所以你的钥匙管理员看不到它们。查看 ssh-agent 手册并尝试在~/.ssh
dir 下对您的密钥进行软链接。类似于ln -s $HOME/dropbox/.../mydsakey $HOME/.ssh/id_rsa
(确切的文件名取决于您的密钥类型)。这应该适用于任何密钥管理器,但是在确定使用哪个密钥管理器后,您可以检查更多干净的其手册中的解决方案。
无论如何,大多数密钥管理器不会在登录时询问您密钥短语,而是当您在会话中第一次尝试使用密钥时询问您密钥短语。
[ -- 后记 -- ]
验证密钥管理器是否正在运行的最简单方法是尝试手动添加密钥:
ssh-add <key-file>
答案3
对于 ubuntu 和 kubuntu,我使用了ssh-agent
自己编写的脚本。
我安装了腻子:
sudo apt-get install putty
您需要id_rsa
在.ssh
主目录的文件夹中使用ssh-keygen
*.ppk(puttygen 生成的文件)创建或转换文件。名字id_rsa
很重要!
puttygen private.ppk -O private-openssh -o $HOME/.ssh/id_rsa
该id_rsa
文件不能被其他人读取或写入:
chmod 600 $HOME/.ssh/id_rsa
我agent.sh
在主目录中创建了一个文件,但它可以放在任何地方:
. $HOME/.ssh/ssh-agent.env 2>/dev/null
if [ "`ssh-add -l | grep id_rsa`" = "" ]; then
mkdir -p $HOME/.ssh/
ssh-agent >$HOME/.ssh/ssh-agent.env
. $HOME/.ssh/ssh-agent.env
ssh-add
fi
您可以使用以下命令执行 putty:
. ./agent.sh; putty
或者:
. ./agent.sh
putty
这 ”。” (点或句点)也很重要,它导出执行脚本的环境变量。第一次它会询问你的密钥文件的密码,下次putty将在不询问密码的情况下执行。
答案4
钥匙链就像ssh-agent
(事实上,它是一种包装器),但它使相同的代理在所有进程中运行。
keychain 是 ssh-agent 的管理器,通常从 ~/.bash_profile 运行。它允许您的 shell 和 cron 作业共享单个 ssh 代理进程。默认情况下,由 keychain 启动的 ssh-agent 会长时间运行,并且即使在您从系统注销后也会继续运行。如果您想更改此行为,请查看 --clear 和 --timeout 选项,如下所述。