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

StackOverflow https://stackoverflow.com/questions/112396

Вопрос

Я установил кодовую фразу при создании нового SSH-ключа на своем ноутбуке.Но, как я теперь понимаю, это довольно болезненно, когда ты пытаешься взять на себя обязательства (Мерзавец и SVN) в удаленное местоположение по SSH много раз в течение часа.

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

Это было полезно?

Решение

Краткий ответ:

$ ssh-keygen -p

Затем вам будет предложено ввести местоположение ключевого файла, старую кодовую фразу и новую кодовую фразу (которую можно оставить пустой, чтобы она не содержала кодовой фразы).

Если вы хотели бы сделать все это в одной строке без подсказок, сделайте:

$ ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]

Важный: Имейте в виду, что при выполнении команд они, как правило, регистрируются в вашем ~/.bash_history файл (или аналогичный) в виде обычного текста, включая все предоставленные аргументы (т.е.ключевые фразы в данном случае).Поэтому рекомендуется использовать первый вариант, если только у вас нет особых причин поступить иначе.Однако обратите внимание, что вы все еще можете использовать -f keyfile без необходимости уточнять -P ни -N, и что ключевой файл по умолчанию равен ~/.ssh/id_rsa, так что во многих случаях это даже не нужно.

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

Другие советы

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

if [ -f ~/.agent.env ] ; then
    . ~/.agent.env > /dev/null
    if ! kill -0 $SSH_AGENT_PID > /dev/null 2>&1; then
        echo "Stale agent file found. Spawning new agent… "
        eval `ssh-agent | tee ~/.agent.env`
        ssh-add
    fi 
else
    echo "Starting ssh-agent"
    eval `ssh-agent | tee ~/.agent.env`
    ssh-add
fi

В некоторых дистрибутивах Linux (Ubuntu, Debian) вы можете использовать:

ssh-copy-id -i ~/.ssh/id_dsa.pub username@host

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

Вы можете прочитать больше здесь и здесь.

$ ssh-keygen -p сработало на меня

Открыл git bash.Наклеенный : $ ssh-keygen -p

Нажмите enter для определения местоположения по умолчанию.

Введите старую кодовую фразу

Введите новую кодовую фразу - ПУСТО

Подтвердите новую кодовую фразу - ПУСТО

БУМ, боль от ввода ключевой фразы для git push исчезла.

Спасибо!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top