Как удалить кодовую фразу для ключа 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.