跳至主要内容

使用 SSH 密钥密码短语

您可以保护 SSH 密钥,并配置身份验证代理,这样每次使用 SSH 密钥时就不必重新输入密码短语。

平台导航

关于 SSH 密钥的密码短语

对于 SSH 密钥,如果有人获得了您的电脑访问权限,攻击者就能访问使用该密钥的所有系统。为了增加一层安全性,您可以为 SSH 密钥添加密码短语。为避免每次连接时都要输入密码短语,您可以将密钥安全地缓存到 SSH 代理中。

添加或更改密码短语

您可以通过以下命令更改现有私钥的密码短语,而无需重新生成密钥对。

$ ssh-keygen -p -f ~/.ssh/id_ed25519
> Enter old passphrase: [Type old passphrase]
> Key has comment 'your_email@example.com'
> 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。更多信息,请参阅 Generating a new SSH key and adding it to the 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 时将密码短语存入钥匙串。更多信息,请参阅 Generating a new SSH key and adding it to the ssh-agent

© . This site is unofficial and not affiliated with GitHub, Inc.