Skip to main content

Работа с парольными фразами ключа SSH

Вы можете защитить ключи SSH и настроить агент проверки подлинности, чтобы вам не пришлось заново вводить парольную фразу при каждом использовании ключей SSH.

Platform navigation

Сведения о парольных фразах для ключей 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.

Если у ключа уже есть парольная фраза, вам будет предложено ввести ее, прежде чем выбрать новую парольную фразу.

Автоматическое запуск ssh-agent в Git для Windows

Вы можете запускать ssh-agent автоматически при открытии оболочки Bash или Git. Скопируйте следующие строки и вставьте их в файл ~/.profile или ~/.bashrc в оболочке Git:

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.