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

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

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

Ответ 1

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

$ 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.

Ответ 2

Возможно, вы захотите добавить следующее в свой .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 [email protected]

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

Здесь вы можете прочитать здесь и здесь.

Ответ 3

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

Открыл git bash. Вставлено: $ ssh-keygen -p

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

Введите старый пароль

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

Подтвердите новый пароль - ПУСТОЙ

БУМ боль от ввода парольной фразы для git push прошла.

Спасибо!

Ответ 4

На Mac вы можете сохранить фразу-пароль для вашего частного ключа ssh в цепочке для ключей, что делает его использование прозрачным. Если вы вошли в систему, она доступна, когда вы вышли из системы, ваш пользователь root не может ее использовать. Удаление парольной фразы - плохая идея, потому что любой, у кого есть файл, может его использовать.

ssh-keygen -K

Добавить это в ~/.ssh/config

UseKeychain yes

Ответ 5

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

Ответ 6

Чтобы изменить или удалить фразу-пароль, мне часто бывает проще передать только флаги p и f, а затем система предложит мне ввести фразу-пароль:

ssh-keygen -p -f <name-of-private-key>

Например:

ssh-keygen -p -f id_rsa

Введите пустой пароль, если вы хотите удалить фразу-пароль.

Пример запуска для удаления или изменения пароля выглядит примерно так:

ssh-keygen -p -f id_rsa
Enter old passphrase: 
Key has comment '[email protected]'
Enter new passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved with the new passphrase.

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

ssh-keygen -p -f id_rsa
Key has comment '[email protected]ath'
Enter new passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved with the new passphrase.