Jia*_* W. 23 ssh keychain ssh-agent macos
我每天都使用 Mac OS X Lion 并通过 SSH 登录远程主机。尽管我使用 SSH 密钥对进行远程身份验证并且我不需要机动化每个主机的登录短语,但终端要求输入密码来访问我的 SSH 私钥仍然很烦人。
出于安全原因,我认为必须需要一个用于访问 SSH 私钥的密码。有没有办法让终端在启动时只询问一次短语,然后记住它,并在以后的 SSH 会话中自动使用我的私钥?
有一个名为的脚本keychain在 Gentoo Linux 上运行良好。但我从来没有在 Mac OS X Lion 上弄明白。更重要的是,有很多令人生畏的术语,例如ssh-agent,ssh-add。在阅读了有关这些 SSH 工具包的各种材料并做了一些令人沮丧的实验后,我更加困惑了。
因此,我来到了StackExchange,就以下问题寻求一些建议。
ssh-agent,ssh-add,keychain,Keychain Access.app以及他们如何互相交流?Keychain Access.app?它不像以前那样存储 SSH 短语。我在这里列出我所做的。希望有关于我错过的步骤的线索。
步骤 1. 在我的 Mac 上创建一个 SSH 密钥对。
$ ssh-keygen -t rsa -C "me@email.com"
# Set a passphrase for accessing the private key.
Run Code Online (Sandbox Code Playgroud)
步骤 2. 将我的 SSH 公钥复制到远程主机。举个例子,我把key复制到localhost,Mac。
$ ssh-copy-id USER@localhost
# Enter the login password for USER at localhost, not my SSH passphrase
Run Code Online (Sandbox Code Playgroud)
第 3 步。然后尝试通过 SSH 密钥对身份验证连接到远程主机(此处为 localhost)。
$ ssh USER@locahost
Enter passphrase for key '/Users/YOUR_ACCOUNT/.ssh/id_rsa':
# Enter my SSH passphrase, not the login password.
Run Code Online (Sandbox Code Playgroud)
步骤 4. 从远程主机注销并再次尝试连接。该死,终端再次要求输入 SSH 短语。
一个常见问题是“ssh-agent 在您的 Mac 上运行良好吗?”。坦率地说,我不知道这些事情是怎么回事。这里展示一些运行结果。
$ echo $SSH_AUTH_SOCK
/tmp/launch-M48niA/Listeners
$ echo $SSH_AUTH_PID
(EMPTY)
$ ssh-add -l
Could not open a connection to your authentication agent.
$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-Z54zXukQiP/agent.26769; export SSH_AUTH_SOCK;
SSH_AGENT_PID=26770; export SSH_AGENT_PID;
echo Agent pid 26770;
$ ssh-add -l
Could not open a connection to your authentication agent.
$ echo $SSH_AUTH_SOCK
/tmp/launch-M48niA/Listeners
$ echo $SSH_AUTH_PID
(STILL EMPTY)
$ ssh-agent # Oh no, anther ssh-agent with different PID
SSH_AUTH_SOCK=/tmp/ssh-cx0B4FUX8B/agent.26898; export SSH_AUTH_SOCK;
SSH_AGENT_PID=26899; export SSH_AGENT_PID;
echo Agent pid 26899;
$ ps -e | grep -i ssh
26769 ?? 0:00.03 ssh-agent
26899 ?? 0:00.02 ssh-agent
Run Code Online (Sandbox Code Playgroud)
欢迎任何反馈。谢谢!
Jia*_* W. 13
在解决“问题”的过程中,我GOOGLE了一些相关的主题,并写下有关如何一些笔记ssh-agent,ssh-add,keychain,KeyChain Access.app工作。最终证明这个问题根本不是问题,而是问题全都与我有关,所谓的ssh-login-without-asking-passphrase-every-time在 Mac 上开箱即用。
但是,这个过程让我获得了一些经验。我在这里写下我的笔记,希望它们能帮助那些对这些术语感到困惑的人。
两个密码术语:
passphrase 指访问 SSH 私钥时所需的短语。password 指登录 Mac 所需的短语。现在我可以弄清楚这些工具包是做什么的,也就是 Mac 上的ssh-agent, ssh-add, keychain, Keychain Access.app。
ssh-agent是无需键入 SSH 密码即可使用 SSH 私钥的关键服务。ssh-agent以这种方式工作。首先,它在主内存中存储或缓存您的 SSH 私钥。然后在此会话的稍后时间,当远程身份验证需要您的 SSH 私有 SSH 密钥时,ssh-agent将在主内存中找到您的私有密钥并将其交给远程进程。要求您输入 SSH 密码的唯一机会是ssh-agent最初添加您的私钥时。ssh-add是ssh-agent集合的一部分,它有助于管理 .ssh 中的 SSH 密钥ssh-agent。我们使用ssh-add命令在 ssh-agent 的密钥环中列出、添加、删除私钥。然后ssh-add与ssh-agent服务通信以完成任务。keychain是用于查找ssh-agent服务(如果不存在,则启动一个新服务)并调用ssh-add以添加 SSH 私钥的脚本。keychain有一个简单而直接的想法,在 ssh-agent 通常不会自动启动的 Linux 上运行良好。Keychain Access.app似乎是最复杂的组件。它是 Mac OS X 的通用令牌存储服务。它存储各种令牌,例如密码、证书等,并充当那些请求令牌的应用程序的令牌代理。在我们的 SSH 私钥案例中,它首先抓取访问 SSH 私钥的请求,并弹出一个窗口,要求您将 SSH 密码,它是一种令牌,存储到Keychain Access.app的密钥环中。那么下次当你要使用私钥进行身份验证时,Keychain Access.app再次弹出一个窗口,询问是否授予权限。得到一个大是后,keychain Access.app将您的私钥添加到ssh-agent的存储中。有两件事值得你注意:
ssh-agent在启动时自动启动一个服务,监听/tmp.Keychain Access.app存储您的 SSH 密码,因此它可以将您的私钥添加到其中ssh-agent而不会打扰您。是的,不需要输入您的 SSH 短语,但需要在第一次创建此条目时输入您的 Mac 帐户的登录密码以授予权限。因此,总而言之,SSH-login-without-asking-passphrase 应该在 Mac OS X 上开箱即用。
Kut*_*ike 12
ssh-agent是您想要工作的作品,因为它完全符合您的要求。代理作为守护进程运行,当您向其“添加”私钥时,它会记住该密钥并sshd在初始连接期间自动将其提供给远程。(ssh-add只是您运行以手动向 中添加私钥的命令ssh-agent)。
在 OS X 中,从 Leopard 开始,您不必运行ssh-agent或ssh-add手动运行。当您尝试连接到服务器时,它应该“发生”。每个密钥一次,它会提示您一个 UI 密码对话框,其中(除其他外)将允许您自动将密钥添加到 ,ssh-agent这样您就不会再次收到提示。
这是通过launchd配置侦听$SSH_AUTH_SOCK套接字上的连接并ssh-agent在第一次需要时自动启动来处理的;之后,ssh-agent仅在需要打开新密钥时才提示您输入凭据。
如果这不起作用,请确保您有正确的launchd配置文件:
/System/Library/LaunchAgents/org.openbsd.ssh-agent.plist
Run Code Online (Sandbox Code Playgroud)
如果由于某种原因它仍然不适合您,这是手动运行的“旧”方法:
http://timesinker.blogspot.com/2007/08/getting-ssh-agent-going-on-mac-osx.html
还有这个应用程序,自从 Leopard 出现后我就停止使用它,但在以前版本的 Mac OS X 中基本上做了同样的事情:
| 归档时间: |
|
| 查看次数: |
39418 次 |
| 最近记录: |