Linux 下的选美是什么?保存SSH私钥密码

Linux 下的选美是什么?保存SSH私钥密码

我希望计算机像选美一样,在启动时显示 SSH 密码提示。我的私钥存储在 3 台计算机之间的 Dropbox 中,其中 1 台现在是 Ubuntu。

我用谷歌搜索了两个小时并询问了其他人,但大多数人根本不使用私钥或使用没有密码的私钥,因此不需要这样的东西。然而,我在多个位置使用相同的私钥并每年更新它。它必须受密码保护,因为它位于多个位置以及我的 Dropbox 上。

我找到了 Seahorse,虽然我不确定它是否能实现我想要的功能,但在导入导出到 OpenSSH 的 PuTTy 密钥时,它会在新安装的 Ubuntu 上出现分段错误。

答案1

许多 Linux 发行版默认从登录管理器启动 ssh-agent。因此,您实际上要做的就是在启动后添加密钥。

因此,您只需设置一个快捷方式脚本或类似的东西即可在登录后立即运行 ssh-add 。如何执行此操作取决于您使用的桌面环境。

您可以安装诸如 之类的 GUI 工具x11-ssh-askpass,以便在 GUI 中显示密码提示。

你可以做事与PAM让它提示您输入密码,或者只是重新使用您的登录密码。

海马或其他密码钱包(1) (2)内置于某些桌面环境中也应该可以工作。我不知道为什么它会为你崩溃。您需要添加更多详细信息。

答案2

您应该检查两件事:

  1. 如果您正在使用最新的 Linux 发行版(例如 ubuntu),那么您的系统上应该已经运行了与 ssh-agent 兼容的密钥管理器。打开 shell(在 X11 下)并检查SSH_AUTH_SOCK环境变量的值。如果是这样的话/tmp/keyring-WEuO6X/ssh,你正在跑步侏儒钥匙圈。如果是这样/tmp/ssh-XXXXXXXXXX/agent.<ppid>,那么你正在跑步ssh代理等等。如果它为空,则表明没有运行密钥管理器。

  2. 我想您将密钥存储在非默认目录中(即不在 下~/.ssh)。所以你的钥匙管理员看不到它们。查看 ssh-agent 手册并尝试在~/.sshdir 下对您的密钥进行软链接。类似于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 选项,如下所述。

相关内容