Як видалити пароль для ключа SSH без створення нового ключа?


1033

Я встановлюю парольну фразу під час створення нового ключа SSH на своєму ноутбуці. Але, як я зараз усвідомлюю, це досить болісно, ​​коли ви намагаєтесь здійснити ( Git та SVN ) у віддаленому місці через SSH багато разів за годину.

Один із способів, що я можу придумати, - видалити свої SSH ключі та створити нові. Чи є спосіб видалити пароль, зберігаючи ті самі ключі?


9
Я думаю, що сувора відповідь - це насправді відповідь Торстена Марека. Трюк ssh-agent може бути тим, що ви шукаєте, але це відповідь на інше питання.
tardate

1
Парольна фраза - це не просто ключ для розблокування приватного ключа SSH, а частина механізму шифрування. Одна частина - ваш ключ SSH, інша - парольна фраза, введена вручну. Тільки в тому випадку, якщо обидві частини правильні, складений ключ, згенерований з них на льоту, буде дійсним. Отже, інша парольна фраза відповідає іншому ключу SSH (і жодна парольна фраза не є особливим випадком "іншої парольної фрази").
Павло

97
Закривати подібні питання - це як дозволити обговорення більш сильних побічних ефектів у мовах програмування, оскільки вони "чисті" чи ні. Пуристи завжди бігають амоком, а інші не бідкають, бо це корисна функція та полегшує життя. ssh потрібен, навіть якщо це не суворо пов'язано з програмуванням ... не закривайте таких питань. : |
sjas

Відповіді:


1929

Коротка відповідь:

$ ssh-keygen -p

Після цього буде запропоновано ввести місцезнаходження ключового файла, стару парольну фразу та нову парольну фразу (яку можна залишити порожньою, щоб не було парольних фраз).


Якщо ви хочете зробити це все в одному рядку без підказок, зробіть:

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

Важливо: Остерігайтеся, що при виконанні команд вони, як правило, заносяться у ваш ~/.bash_historyфайл (або подібний) у простому тексті, включаючи всі надані аргументи (тобто паролі у цьому випадку). Тому рекомендується використовувати перший варіант, якщо у вас немає конкретної причини зробити інше.

Зауважте, що ви все ще можете використовувати, -f keyfileне вказуючи -Pні -N, і що за замовчуванням файл файлів ключів ~/.ssh/id_rsa, тому у багатьох випадках він навіть не потрібен.

Ви можете розглянути можливість використання ssh-агента, який може кешувати парольну фразу на час. Останні версії gpg-агента також підтримують протокол, який використовується ssh-агентом.


464
Щоб бути ясним: ви можете просто запустити ssh-keygen -pв терміналі. Після цього буде запропоновано ввести ключовий файл (за замовчуванням правильний для мене файл ~/.ssh/id_rsa), стару парольну фразу (введіть те, що у вас є зараз) та нову парольну фразу (нічого не вводити).
Генрік N

34
Вих. :ssh-keygen -p -P oldpassphrase -N "" -f ~/.ssh/id_rsa
Федір РИХТИК

24
-1 для того, щоб змусити користувача ввести свій пароль у терміналі та зробити його доступним через ~/.bash_history. Краще набрати:$ cd ~/.ssh && ssh-keygen -f id_dsa -p
betoharres

5
Ви, хлопці, повинні зауважити, що якщо ви вводите команду до оболонки, розпочався (білий) пробіл, що команда не записується в ~/.bash_hstoryIe. використовуйте `ssh-keygen -p -P oldpassphrase -N" "-f ~ / .ssh / id_rsa`, і у вас все добре (якщо тільки у вас там немає іншого кейлоггера). Ви також могли позбутися запису з історії ..
Величезний

14
Можливо, варто додати рядок, який говорить про те, що це замінить існуючий файл, а не підкаже нове місце.
Ларс Франке

46

$ ssh-keygen -p працював на мене

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

Натисніть клавішу Enter для розташування за замовчуванням.

Введіть стару парольну фразу

Введіть нову парольну фразу - BLANK

Підтвердити нову парольну фразу - BLANK

БУМ болі введення парольної фрази для git push не було.

Дякую!


Якщо ви натиснете клавішу Enter для, $ ssh-keygen -pа ваш ключ не знаходиться у місці за замовчуванням, скажімо, (/Users/yourname/.ssh/id_rsa), ви можете відповісти, поставивши /Users/yourname/.ssh/yourkeyпри запиті
Chigozie Orunta

37

Ви можете додати наступне у свій .bash_profile (або еквівалент), який запускає ssh-агент під час входу.

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

Це скопіює згенерований ідентифікатор на віддалену машину та додасть його до віддаленої брелок.

Більше можна прочитати тут і тут .


7
Невже сучасний дистрибутив не запускає ssh-агент з коробки?
Тролі Арвін

У деяких дистрибутивах Linux (Ubuntu, Debian) ви можете використовувати: ssh-copy-id -i ~ / .ssh / id_dsa.pub username @ host Припустимо, звичайно, ви маєте доступ таким чином. І хоча це з 2008 року, можливо, його слід редагувати, щоб посилатися на id_rsa.pub (так, я міг би це відредагувати, але мені не комфортно робити це на чужі твори - і це стосується чогось подібного).
Прифтан

@TroelsArvin Так. Але ото є випадки, коли його вбивають (хоча обставина, на яку я зіткнулася, не спадає на думку - якщо, можливо, у X11 є проблема, і вам доведеться перезапустити її ... це може бути один з таких випадків). У такому випадку вам доведеться "відтворити" це.
Прифтан

8

Щоб змінити або видалити фразу, я часто вважаю найпростішим вводити тільки 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 'bcuser@pl1909'
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 'charlie@elf-path'
Enter new passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved with the new passphrase.

3

У Windows можна використовувати PuttyGen для завантаження файлу приватного ключа, видалення парольної фрази та перезапис існуючого файлу приватного ключа.


2

На Mac ви можете зберігати парольну фразу для вашого приватного ключа ssh у вашому Keychain, що робить його використання прозорим. Якщо ви ввійшли в систему, він доступний, коли ви вийшли з системи, користувач root не може його використовувати. Видалення парольної фрази - погана ідея, оскільки будь-хто з файлом може нею користуватися.

ssh-keygen -K

Додайте це до ~/.ssh/config

UseKeychain yes
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.