我在 .bashrc 中添加以下内容
ssh-add ~/.ssh/id_rsa
因此,当我在 shell/终端应用程序(macOS 上的 iTerm2)中打开一个新选项卡时,它会使用 SSH 代理自动添加 SSH 身份,并且我不需要在该选项卡中手动输入 SSH 密码。但如果我有很多选项卡,似乎就不必要有很多正在运行的 ssh-agent 实例。
有更好的方法来实现这一目标吗?
答案1
您的问题似乎是您在每个 shell 初始化时开始对代理进行新的调用(可能在您的.bash_profile
或中.bashrc
)。这是没有必要的,因此您应该找到那些 ssh-agent 调用并将其删除。
在 OSX 上,通常会在桌面会话启动时启动一个 ssh 代理。例如:
myhost:~)-> ps -ef | grep ssh-agent
501 986 1 0 10:18AM ?? 0:00.14 /usr/bin/ssh-agent -l
501 2126 736 0 5:30PM ttys007 0:00.00 grep ssh-agent
为了访问它,您需要找出它的侦听套接字在哪里,通常在/tmp/com.apple.launchd.<blah>/Listeners
(其中<blah>
是一些随机的字母数字标识符。可能有几个,但您想要其中具有“侦听器”套接字的那个)。
一旦找到它的套接字,您就可以使用标准 SSH 环境变量 来连接它SSH_AUTH_SOCK
。例如:
myhost:~)-> export SSH_AUTH_SOCK=/tmp/com.apple.launchd.1h2j3k4l5/Listeners
myhost:~)-> ssh-add ~/.ssh/id_rsa
Enter passphrase for ~/.ssh/id_rsa: <typing_here>
Identity added: ~/.ssh/id_rsa (~/.ssh/id_rsa)
一旦将其导出到 shell,此时就可以使用该ssh-add
命令提供他或她的密钥密码并向代理添加密钥。您还可以在 ssh-agent 的手册页中查看您可能想要探索的其他选项。