我每天都使用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
以及他们如何互相交流? - 如何在登录时为SSH私钥输入一次密码短语,并在以后的SSH会话创建中自由使用它?
- Errr ...怎么了
Keychain Access.app
?它不像以前那样存储SSH短语。
我列出了我在这里所做的事情。希望有关于我错过的步骤的线索。
步骤1.在Mac上创建一个SSH密钥对。
$ ssh-keygen -t rsa -C "me@email.com"
# Set a passphrase for accessing the private key.
步骤2.将我的SSH公钥复制到远程主机。举个例子,我将密钥复制到Mac的localhost。
$ ssh-copy-id USER@localhost
# Enter the login password for USER at localhost, not my SSH passphrase
步骤3.然后尝试通过SSH密钥对身份验证连接到远程主机(此处为localhost)。
$ ssh USER@locahost
Enter passphrase for key '/Users/YOUR_ACCOUNT/.ssh/id_rsa':
# Enter my SSH passphrase, not the login password.
步骤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
欢迎任何反馈。谢谢!