ssh-add всегда запрашивает пароль — автоматизируйте это в bashrc

Вопрос или проблема

Я хочу добавить в мой bashrc следующий код:

eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa

но он всегда запрашивает

Введите пароль для /home/User/.ssh/id_rsa:

Мой друг добавил тот же фрагмент кода в bashrc, и это работало идеально (без запроса пароля и с сообщением Учетные данные добавлены: /home/User/.ssh/id_rsa).

Как я могу сделать так, чтобы мне не приходилось вводить пароль каждый раз, когда я захожу в терминал, и чтобы мне показывалась информация о том, что учетные данные добавлены?

Вся идея ssh-agent заключается в том, чтобы позволить вам добавить ваши ключи и пароли один раз, чтобы вам не приходилось вводить их снова, пока машина работает. Вам не нужно запускать ssh-add в вашем bashrc – вам нужно выполнить его один раз в вашем терминале, чтобы ввести пароль, и пока ваш ssh-agent работает, он будет хранить расшифрованный ключ в своей памяти, и вам не придется вводить пароль снова. Вам нужно оставить только строку eval $(ssh-agent -s) в вашем bashrc.

Причина, по которой он запрашивает пароль в первую очередь, заключается в том, что когда вы создаете новый ssh-ключ (используя ssh-keygen), он запрашивает у пользователя пароль. Вы можете оставить его пустым, чтобы указать, что не хотите шифровать свой ключ, но если вы введете пароль, вам придется вводить его каждый раз, когда вы захотите использовать ключ в будущем (снова, это как раз то, где ssh-agent оказывается полезным).

Разница между вами и вашим другом в том, что ваш ssh-ключ, вероятно, защищен паролем, а ключ вашего друга – нет.

Как написал @FelixJN в комментарии, вы можете запустить ssh-keygen -y -f ~/.ssh/id_rsa, чтобы подтвердить, что он запрашивает пароль. Если ваш друг запустит его, он, вероятно, не запросит его, потому что его ключ не зашифрован.

Ответ или решение

Конечно! Процесс настройки ssh-agent и автоматического добавления вашего ключа SSH в bashrc может вызвать некоторые вопросы, особенно если вы сталкиваетесь с постоянным запросом пароля. Давайте разберемся детально.

Проблема

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

Причина проблемы

Причина, по которой вас постоянно просят ввести пароль, заключается в том, что ваш SSH-ключ (~/.ssh/id_rsa) защищен паролем, который был установлен при его создании. В отличие от вашего ключа, у вашего друга, возможно, ключ не зашифрован паролем.

Решение

Чтобы решить данную проблему, воспользуйтесь следующими рекомендациями:

  1. Настройка ssh-agent: Ваша основная задача — убедиться, что ssh-agent запущен и что вы добавляете ключ только один раз. Вам нужен только следующий код в вашем ~/.bashrc:

    # Запуск ssh-agent, если он еще не запущен
    if ! pgrep -u "$USER" ssh-agent > /dev/null; then
       eval $(ssh-agent -s)
    fi

    Этот код проверяет, запущен ли уже ssh-agent. Если нет, запускает его, чтобы избежать многократных запусков, которые могут привести к путанице.

  2. Добавление ключа: Вам не нужно каждый раз добавлять ключ с помощью ssh-add ~/.ssh/id_rsa в bashrc. Для этого фактически достаточно выполнить ssh-add один раз. Я рекомендую добавить эту команду только после первого запроса пароля, чтобы ключ был закреплен на сеанс.

  3. Использование ключа без пароля: Если вы не хотите вводить пароль при каждом запуске терминала, вы можете создать новый SSH-ключ без пароля. Однако это может повлечь за собой риски безопасности, поскольку любой, у кого есть доступ к вашему ключу, сможет подключиться к серверам, используя его без дополнительной аутентификации. Если вы хотите это сделать, используйте следующую команду:

    ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N ""

    При этом параметр -N "" указывает, что вы не хотите устанавливать пароль.

  4. Проверка с помощью команды: После того как вы внесете изменения, вы можете проверить, запрашивает ли ключ пароль, используя команду:

    ssh-keygen -y -f ~/.ssh/id_rsa

    Если ключ защищен паролем, вам будет предложено его ввести.

Вывод

Ваша проблема с постоянным запросом пароля связана с тем, что ваш SSH-ключ зашифрован. Если вы хотите избежать этого, убедитесь, что вы правильно запустили ssh-agent и добавили ключ только один раз. Если же вы предпочитаете свободу от пароля, можно создать новый ключ без пароля, но обязательно учитывайте меры безопасности.

Если вам нужны дополнительные рекомендации или хотите обсудить конкретные аспекты безопасности, не стесняйтесь обращаться!

Оцените материал
Добавить комментарий

Капча загружается...