Як видалити ключ ssh?


154

На даний момент на сервер завантажено старий ключ SSH. Проблема в тому, що я втратив ~/.sshкаталог (з оригіналом id_rsaта id_rsa.pubфайлами).

Отже, я хочу видалити старий ключ SSH безпосередньо на сервер і завантажити новий.

Я успішно спробував таку команду:

$> ssh-add -D

введіть тут опис зображення

Чи є спосіб повністю видалити ключ SSH?


Що з ssh-add -d?
користувач2196728

5
чорт, це ssh-add -D, великі регістри
Олександр Міллз

Перевірте свої розетки, якими користується ваш ssh-агент (1).
Дуайт Спенсер

Відповіді:


129

Зауважте, що існує не менше двох звітів про помилки щодо ssh-add -d/-D не видалення ключів:

Точне питання:

ssh-add -d/-Dвидаляє лише ключі, додані вручну з gnome-keyring.
Немає можливості видалити автоматично додані ключі.
Це оригінальна помилка, і вона все одно точно присутня.

Так, наприклад, якщо у вас є дві різні автоматично завантажені ssh ідентичності, пов’язані з двома різними обліковими записами GitHub - скажімо, для роботи та для дому - немає можливості перемикатися між ними. GitHubtakes - перший, який відповідає, тому ви завжди з'являєтесь як "домашній" користувач до GitHub, не маючи можливості завантажувати речі в робочі проекти.

Дозвіл ssh-add -dзастосувати до автоматично завантажених ключів (та ssh-add -t Xзмінити термін служби ключів, що автоматично завантажуються) відновив би поведінку, яку очікують більшість користувачів.


Точніше, про проблему:

Винуватець gpg-keyring-daemon:

  • Це підриває нормальну роботу ssh-агента, здебільшого просто так, що він може спливати гарне поле, в яке ви можете ввести парольну фразу для зашифрованого ключа ssh.
  • І він пробирається через ваш .sshкаталог і автоматично додає будь-які ключі, які він знайде вашому агенту.
  • І це не дозволить вам видалити ці ключі.

Як ми це ненавидимо? Не будемо рахувати шляхи - життя занадто коротке.

Помилка ускладнюється тим, що новіші клієнти ssh автоматично випробовують усі ключі вашого ssh-агента під час підключення до хоста.
Якщо їх занадто багато, сервер відхилить з'єднання.
А оскільки gnome-keyring-daemon вирішив для себе, скільки ключів ви хочете мати у свого ssh-агента, і завантажив їх автоматично, І НЕ МОЖЕ ВИ ЗДІЛИТИ ЇХ, ви тост.

Ця помилка все ще підтверджена в Ubuntu 14.04.4, нещодавно як два дні тому (21 серпня 2014 р.)


Можливе вирішення:

  • Виконайте ssh-add -Dвидалення всіх доданих вами вручну ключів. Це також блокує автоматично додані ключі, але це не дуже корисно, оскільки gnome-keyringпопросить вас розблокувати їх у будь-якому випадку, коли ви намагаєтеся робити git push.
  • Перейдіть у свою ~/.sshпапку та перемістіть усі ключові файли, крім того, з яким ви хочете ідентифікувати, в окрему папку під назвою резервного копіювання. При необхідності ви також можете відкрити морського коня і видалити звідти ключі.
  • Тепер ви повинні мати можливість git pushбез проблем.

Ще одне вирішення:

Те, що ви насправді хочете зробити, - це gpg-keyring-daemonвзагалі вимкнути .
Йти доSystem --> Preferences --> Startup Applications та зніміть SSH Key Agent (Gnome Keyring SSH Agent)прапорці "" - вам потрібно буде прокрутити вниз, щоб знайти його.

Ви все одно отримаєте ssh-agent, тільки тепер він поводитиметься добросовісно: жодні ключі не завантажуються автоматично, ви запускаєте ssh-add, щоб додати їх, і якщо ви хочете видалити ключі, можете. Уяви що.

Цей коментар насправді говорить про:

Рішення полягає в тому, щоб уникнути gnome-keyring-managerзапуску, що було дивно важко, нарешті досягнуто шляхом видалення дозволу на виконання програмного файлу.


Райан Люе додає ще один цікавий кутовий випадок у коментарях :

У випадку, якщо це допоможе комусь: я навіть спробував видалити id_rsaіid_rsa.pub файли файли взагалі, і ключ все ще з’являвся.

Виявляється, gpg-agentкешували їх у ~/.gnupg/sshcontrolфайлі ; Мені довелося видалити їх звідти вручну.

Це той випадок , коли був доданий , як тут .keygrip


1
Інший варіант Ubuntu 14-16 - використовувати gui "Паролі та ключі" (ви можете знайти для ssh, щоб знайти його). Виберіть, наприклад, клавіші OpenSS, потім клацніть правою кнопкою миші та виберіть видалити. Можливо, вам доведеться перезапустити систему, щоб побачити її видалення.
користувач3257693

2
Чому ця інформація про ssh-agentта ssh-addобрану відповідь? Оригінальний плакат сказав, що хоче remove the old SSH key directly on the server and upload a new one. Це здається, що він хоче редагувати ~/.ssh/authorized_keysна віддаленому хості.
H2ONaCl

1
Ця відповідь спонукала мене вирішити проблему, яка відображається із включеним пересиланням ssh. Перехід з машини Ubuntu 16.04 в систему debian, куди пересилаються всі ssh облікові дані a, git cloneвикористовував перший ключ ланцюга замість версії в конфігураційному файлі у вікні Ubuntu. Поганий ключ автоматично всмоктувався і пересилався до вікна Debian.
redfive

1
Це справжній біль ззаду. Я працюю над проектами компанії та підписую контракти на роботу в іншій компанії. Це просто додає даремно витраченого часу на управління обома. Я сподіваюся, що виправлення незабаром з'явиться
joshlsullivan

1
Якщо це допомагає кому-небудь: я навіть спробував видалити файли id_rsaта id_rsa.pubфайли взагалі, і ключ все ще з’являвся. Виявляється, gpg-агент кешував їх у ~/.gnupg/sshcontrolфайлі; Мені довелося видалити їх звідти вручну.
Райан Люе

10

Якщо ви намагаєтесь виконати операцію, пов’язану з ssh, і отримаєте таку помилку:

$ git fetch
no such identity: <ssh key path>: No such file or directory

Ви можете видалити відсутній ключ ssh зі свого агента ssh за допомогою наступного:

$ eval `ssh-agent -s`  # start ssh agent
$ ssh-add -D <ssh key path>  # delete ssh key

9

Якщо я не розумію, ви втратили .sshкаталог, що містить ваш приватний ключ на вашій локальній машині, і тому ви хочете видалити відкритий ключ, який знаходився на сервері та в якому було дозволено вхід на основі ключів. У такому випадку він буде зберігатися у .ssh/authorized_keysфайлі у вашому домашньому каталозі на сервері. Ви можете просто відредагувати цей файл за допомогою текстового редактора та видалити відповідний рядок, якщо зможете його ідентифікувати (ще простіше, якщо це єдиний запис!). Я сподіваюся, що ключ був не єдиним методом доступу до сервера, і у вас є інший спосіб входу та редагування файлу. Ви можете вручну додати новий відкритий ключ до authorised_keysфайлу або використовувати ssh-copy-id. У будь-якому випадку вам знадобиться встановлення автентичності пароля для вашого облікового запису на сервері, або якийсь інший спосіб посвідчення чи спосіб доступу, щоб дістатися до authorized_keysфайлу на сервері.

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


Я видалив цей файл, і я все ще можу підключитися. Тож воно тут точно не містилося ... Це був автоматично доданий ключ, але все ще не існує ніде.
Ларрі,

5

Я відкрив додаток "Паролі та ключі" у своєму Unity та видалив із Secure Keys небажані ключі -> OpenSSH ключі. Вони автоматично також були видалені з ssh-agent -l .


2
Будьте уважні, що це також видаляє їх із каталогу~/.ssh
Петро В. Мерч

1

Я можу підтвердити, що ця помилка все ще присутня в Ubuntu 19.04. Проблема, яку запропонував @VonC, спрацювала чудово, підводячи підсумки для моєї версії:

  • Перейдіть на вкладку "Діяльність" у верхньому лівому куті
  • У вікні пошуку, що з’являється, починайте вводити "програми запуску"
  • Клацніть на піктограмі "Запуск програм"
  • У вікні, що з'явиться, виберіть додаток менеджера кільцевих ключів gnome (не можу запам’ятати точне ім'я в графічному інтерфейсі, але воно досить виразне) та видаліть його.

Що я зробив далі, це спробувати ssh-add -Dще раз, і після перезавантаження ssh-add -lмені сказали, що агент не має посвідчень. Я підтвердив, що в мене ще ssh-agentбіг демон ps aux | grep agent. Тому я додав ключ, який я найчастіше використовую з GitHub ( ssh-add ~/.ssh/id_ecdsa), і все добре!

Тепер я можу виконувати звичайні операції з моїм найбільш часто використовуваним сховищем, і якщо мені періодично потрібен доступ до іншого сховища, яке використовує ключ RSA, я просто виділяю для нього один термінал export GIT_SSH_COMMAND="ssh -i /home/me/.ssh/id_rsa.pub". Вирішено! Кредит надходить до @VonC за вказівку на помилку та рішення.


1

Перевірте .ssh ключ чи ні у вашій системі

  1. Перейдіть у папку -> /Users/administrator/.ssh/id_ed25519.pub

Якщо ні, ніж

  1. Відкритий термінал.

Минуло в терміналі

  1. Перевірте користувача -> ssh -T git@gitlab.com

Видаліть існуючий ключ .ssh

  1. Видаліть існуючий ключ .ssh -> rm ~ / .ssh / github_rsa.pub

Створити новий

  1. Створіть новий .ssh ключ -> ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

  2. Відкритий ключ збережено в "/Users/administrator/.ssh/id_ed25519.pub."

  3. Відкрийте відкритий ключ, збережений шлях.
  4. Скопіюйте ключ .ssh -> Обліковий запис GitLab -> Налаштування -> Ключ SSH -> Додати ключ
  5. Перевірте ще раз термінал -> ssh -T git@gitlab.com

0

Для мене рішенням (OpenSuse Leap 42.3, KDE) було перейменування папки ~/.gnupg яка, очевидно, містила кешовані клавіші та профілі. Після виходу / виходу з KDE ssh-add / agent знову запускається, і папка створюється з нуля, але старі ключі відпали.

Я не мав успіху з іншими підходами.

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