Как можно сохранить парольную фразу SSH-ключа, чтобы не вводить её каждый раз?

После переустановки системы я столкнулся с проблемой: при входе на серверы с использованием ключа, который уже был добавлен, требуется ввести парольную фразу:  
<pre><code class="bash">Enter passphrase for key '/home/dmitriy/.ssh/id_rsa':</code></pre>  
Я подозреваю, что ssh-agent не запускается, так как при попытке выполнить команду:  
<pre><code class="bash">ssh-add ~/.ssh/id_rsa
Could not open a connection to your authentication agent.</code></pre>  
я получаю ошибку. Я запускаю ssh-agent с помощью:  
<pre><code class="bash">eval `ssh-agent -s`
Agent pid 1138327
ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/dmitriy/.ssh/id_rsa: 
Identity added: /home/dmitriy/.ssh/id_rsa (/home/dmitriy/.ssh/id_rsa)
ssh-add -l
2048 SHA256:fPUJ5OVY6KqRdvdKQ3IoXU5ZoTvk0oxawhlEK0GxDk8 /home/dmitriy/.ssh/id_rsa (RSA)</code></pre>  
Однако, при попытке входа на сервер, система снова запрашивает пароль:  
<pre><code class="bash">ssh root@192.168.228.8                                                                                                                                                      ✔ 
Enter passphrase for key '/home/dmitriy/.ssh/id_rsa':</code></pre>  
В файле <i>~/.ssh/config</i> у меня прописаны следующие настройки:  
<pre><code class="bash">HostKeyAlgorithms=+ssh-rsa
User=root
PubkeyAcceptedKeyTypes=+ssh-rsa
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa</code></pre>  
Что еще нужно изменить или проверить, чтобы эта проблема была решена?
  • 24 января 2025 г. 10:24
Ответы на вопрос 2
Чтобы включить автоматическое использование password-free SSH-ключа, необходимо убедиться, что ssh-agent работает корректно и что ключ добавлен к агенту. Ниже приведены шаги, которые следует выполнить для устранения проблемы:

1. **Запустите `ssh-agent`**:
   Если вы работаете в терминале, попробуйте выполнить команду:
   ```bash
   eval "$(ssh-agent -s)"
   ```
   Это запустит ssh-agent и экспортирует необходимые переменные окружения.

2. **Добавьте ключ к `ssh-agent`**:
   После запуска `ssh-agent`, добавьте ваш ключ с помощью команды:
   ```bash
   ssh-add ~/.ssh/id_rsa
   ```
   Вас попросят ввести парольную фразу для ключа, но как только ключ будет добавлен, он сможет хранить данную информацию в течение текущей сессии терминала.

3. **Убедитесь, что `ssh-agent` будет запущен автоматически**:
   Чтобы ssh-agent запускался automáticamente при каждом входе в систему, добавьте следующую строку в ваш файл конфигурации оболочки (например, `~/.bashrc`, `~/.bash_profile`, `~/.zshrc` или аналогичный):
   ```bash
   eval "$(ssh-agent -s)"
   ssh-add ~/.ssh/id_rsa
   ```
   Не забудьте перезапустить терминал или загрузить изменения, выполнив:
   ```bash
   source ~/.bashrc   # или другой файл конфигурации, который вы изменили
   ```

4. **Проверьте ваш `~/.ssh/config`**:
   Убедитесь, что в файле `~/.ssh/config` у вас действительно прописаны необходимые параметры. Он может выглядеть так:
   ```bash
   Host *
       AddKeysToAgent yes
       IdentityFile ~/.ssh/id_rsa
   ```

5. **Проверьте, что не запущен другой ssh-agent**:
   Убедитесь, что не запущен другой экземпляр `ssh-agent`, который может конфликтовать. Это можно сделать с помощью:
   ```bash
   ps aux | grep ssh-agent
   ```
   Если есть лишние процессы, попробуйте их завершить.

6. **Тестирование**:
   Теперь попробуйте подключиться к серверу снова:
   ```bash
   ssh root@192.168.228.8
   ```
   Если все сделано правильно, система не должна запрашивать парольную фразу.

Если после выполнения всех этих шагов проблема продолжает существовать, возможно, стоит рассмотреть возможность генерации нового SSH-ключа без парольной фразы (если это приемлемо с точки зрения безопасности) или использовать менеджер паролей, подобный `pass`, для управления парольными фразами.
Возможно не хватает переменных окружения SSH_AUTH_SOCK и SSH_AGENT_PID. 
Чтобы не заполнять вручную и экспортировать их, можно запустить шелл через ssh-agent, например:
ssh-agent bash
Похожие вопросы