关于 SSH 密钥的密码短语
对于 SSH 密钥,如果有人访问您的计算机,攻击者可以访问使用该密钥的每个系统。为了增加一层安全保护,您可以为 SSH 密钥添加密码短语。为了避免每次连接时都输入密码短语,您可以将密码短语安全地保存在 SSH 代理中。
添加或更改密码短语
您可以通过键入以下命令来更改现有私钥的密码短语,而无需重新生成密钥对
$ ssh-keygen -p -f ~/.ssh/id_ed25519
> Enter old passphrase: [Type old passphrase]
> Key has comment '[email protected]'
> Enter new passphrase (empty for no passphrase): [Type new passphrase]
> Enter same passphrase again: [Repeat the new passphrase]
> Your identification has been saved with the new passphrase.
如果您的密钥已具有密码短语,则系统会提示您在更改为新的密码短语之前输入它。
在 Git for Windows 上自动启动ssh-agent
打开 bash 或 Git shell 时,您可以自动运行ssh-agent
。复制以下几行并将它们粘贴到 Git shell 中的~/.profile
或~/.bashrc
文件中
env=~/.ssh/agent.env
agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }
agent_start () {
(umask 077; ssh-agent >| "$env")
. "$env" >| /dev/null ; }
agent_load_env
# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2=agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)
if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
agent_start
ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
ssh-add
fi
unset env
如果您的私钥未存储在默认位置之一(例如~/.ssh/id_rsa
),则需要告诉 SSH 身份验证代理在哪里可以找到它。要将密钥添加到 ssh-agent,请键入ssh-add ~/path/to/my_key
。有关更多信息,请参阅“生成新的 SSH 密钥并将其添加到 ssh-agent”
提示
如果您希望ssh-agent
在一段时间后忘记您的密钥,您可以通过运行ssh-add -t <seconds>
来配置它。
现在,当您第一次运行 Git Bash 时,系统会提示您输入密码短语
> Initializing new SSH agent...
> succeeded
> Enter passphrase for /c/Users/YOU/.ssh/id_rsa:
> Identity added: /c/Users/YOU/.ssh/id_rsa (/c/Users/YOU/.ssh/id_rsa)
> Welcome to Git (version 1.6.0.2-preview20080923)
>
> Run 'git help git' to display the help index.
> Run 'git help <command>' to display help for specific commands.
ssh-agent
进程将继续运行,直到您注销、关闭计算机或终止进程。
将密码短语保存到密钥链
在 Mac OS X Leopard 到 OS X El Capitan 上,这些默认私钥文件会自动处理
- .ssh/id_rsa
- .ssh/identity
第一次使用密钥时,系统会提示您输入密码短语。如果您选择使用密钥链保存密码短语,则无需再次输入。
否则,您可以在将密钥添加到 ssh-agent 时将密码短语存储在密钥链中。有关更多信息,请参阅“生成新的 SSH 密钥并将其添加到 ssh-agent”。