Ключ недействителен, сообщение на GitHub

Я сгенерировал ключи SSH для установки нового сервера в соответствии с процедурой, описанной здесь . Однако, когда я копирую содержимое id_rsa.pub в свой список ключей на GitHub, я получаю сообщение об ошибке «Ключ недействителен. Убедитесь, что вы правильно скопировали файл».

Сгенерированный ключ действителен, и я копирую его точно так, как есть (все в одну строку без пробелов в начале/конце).

Кто-нибудь знает, что может происходить?


person user2398029    schedule 07.05.2012    source источник
comment
Просто чтобы быть уверенным, вы включили ssh-rsa, который стоит перед самим ключом, да?   -  person David Cain    schedule 07.05.2012
comment
По крайней мере, в CentOS 7.x, если вы сгенерируете свой ключ SSH, используя только ssh-keygen, формат не будет работать. Я получил это сообщение Key is not in OpenSSH format. Я исправил это с помощью ssh-keygen -t rsa -b 4096 , затем скопировал этот ключ на Github cat ~/.ssh/id_rsa.pub   -  person Dio Phung    schedule 24.01.2021


Ответы (22)


Я пришел сюда, потому что у меня была такая же проблема. Из вашего вопроса я понял, что копировал содержимое не того файла, без расширения .pub (это был мой закрытый ключ, то есть файл id_rsa, который всегда должен быть закрытым!)

От MAC:

vi ~/.ssh/id_rsa.pub

Скопируйте точно с конца (с последней буквой расширения вашего почтового домена) блока символов в начало, которое начинается с ssh-rs ...

Если это не работает, вы наверняка неправильно копируете.

Это сработало.

Если вы используете Windows, используйте блокнот и копирование и вставку, как описано выше.

Я надеюсь, что это помогло.

person Shailen    schedule 07.05.2012
comment
По очень неясной причине копирование-вставка из emacs удалила \n после ssh-rsa, и это вызывало проблему. Копипаст из vi решил проблему. Поскольку вы дали мне идею попробовать это, я присуждаю вам ответ! - person user2398029; 09.05.2012
comment
ви у меня не работал. Мне пришлось использовать команду cat (OSX), чтобы распечатать ее на терминале и скопировать ее вывод. Спасибо, что поставили меня на правильный путь. - person Jeremiah; 29.07.2015
comment
копирование из vim сработало для меня, но копирование результата имени файла cat не помогло - person BradT; 23.12.2015
comment
По какой-то причине мой vim не смог обернуть ключ. Скопировано из возвышенного, чтобы получить весь ключ. Работал. - person John Cramerus; 22.07.2017
comment
vi сделал свое дело, я использовал nano, который усекает файл с символом $ - person Jacky; 10.01.2020
comment
То же самое здесь, использование nano не удалось и привело к вышеупомянутой ошибке; но использование vi просто сработало. - person Johannes; 07.04.2020
comment
Иеремия спас меня! Я потратил несколько дней, чтобы решить эту проблему, но не смог. Копирование ключа SSH в буфер обмена — это настоящий трюк, и лучший способ сделать это — скопировать его прямо из терминала, а не из блокнота или любого другого инструмента и т. д. - person Bilal Saeed; 13.03.2021

Вот несколько шагов, которые совсем не понятны при копировании/вставке открытого ключа. (Для справки, я использовал генератор ключей Putty для своих ключей.)

  • В первой строке введите ssh-rsa.
  • Убедитесь, что вы добавили один пробел после ssh-rsa
  • Когда вы копируете/вставляете ключ в текстовое поле «Ключ», он должен сохранять символы \n (x0A). Если вы используете Блокнот в Windows, вы не увидите эти новые строки, пока не скопируете текст на Github.

Обратите внимание, что на этом снимке экрана после ssh-rsa есть пробел (см. курсор). Текст открытого ключа также включает три символа \n, поэтому вы можете увидеть, как текст открытого ключа трижды переходит на следующую строку в текстовом поле.< img src="https://i.stack.imgur.com/JVYRZ.png" alt="SSH RSA-ключ">

person James Lawruk    schedule 11.06.2013
comment
В моем файле id_rsa.pub отсутствовала часть ssh-rsa. Добавление его вручную на Github помогло. - person Furgas; 04.08.2013
comment
В связи с этим в GitLab (проверено 7.4.3) ключи SSH можно добавлять только при (как предложено выше) добавлении ssh-rsa и не включая символы новой строки. - person jdknight; 20.11.2014
comment
Это должно быть конкретной проблемой замазки; У меня была такая же ошибка с шпатлевкой - person jpaugh; 23.07.2015
comment
@JamesLawruk Кстати, GitHub (и, я думаю, любая программа, использующая ssh) игнорирует все символы новой строки в ключевом файле. (Вот почему вам разрешено разбить его на 3 строки --- в довольно произвольных точках.) - person jpaugh; 23.07.2015
comment
добавление ssh-rsa с одним пробелом после этого мне помогло. большое спасибо. - person Ales; 15.03.2018
comment
Если у вас есть ключ, созданный puttygen, вы можете использовать puttygen для загрузки ключа, а затем скопировать оттуда текст открытого ключа. В противном случае вам придется манипулировать содержимым файла, чтобы получить его в указанном выше формате. - person Mmm; 05.08.2020
comment
В моем случае перед изменением строки есть пробелы, из-за которых копирование и вставка не работают. - person zyy; 05.09.2020

Я знаю, что этому вопросу уже несколько лет, но если кто-то в 2018 году столкнется с этим:

то ниже не составляет труда:

моя проблема заключалась в том, что я пытался скопировать закрытый ключ

id_rsa

вместо содержания открытого ключа

id_rsa.pub

как мой ключ репозитория SSH gitlab, поэтому после вас:

ssh-keygen -t rsa -C "[email protected]" -b 4096

помните о расширении файла .pub для копирования:

  • OSX:

pbcopy ‹ ~/.ssh/id_rsa.pub

  • Линукс:

xclip -sel clip ‹ ~/.ssh/id_rsa.pub

  • Windows PowerShell

кошка ~/.ssh/id_rsa.pub | клип


then paste it to your gitlab/github or other repository as your SSH key

это имеет смысл, потому что вы всегда должны делиться только своим открытым ключом, а не закрытым :)

person Piotr Z    schedule 22.08.2018
comment
ssh-keygen -t rsa -b 4096 помогло, очевидно, вы можете не указывать -C [email protected] - person Dio Phung; 24.01.2021
comment
Я люблю вас. Я пытался получить это в течение нескольких часов, и этот ответ был единственным, который мне помог :) - person ; 12.02.2021

Я пробовал несколько способов, но ни один из них не помогает (у меня ОС Ubuntu). Затем я подумал, могу ли я распечатать содержимое ~/.ssh/id_rsa.pub с помощью команды «больше».

Извините, чем у меня нет репутации для публикации изображений! когда будет, выложу!

Вот URL-адрес, по которому вы можете увидеть изображение:

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

Я скопировал содержимое из командной строки, и это РАБОТАЛО!!!

person Sparks_Fly    schedule 22.11.2013
comment
Разместите URL-адрес изображения, некоторые пользователи могут добавить его в тело для вас. - person DontVoteMeDown; 22.11.2013
comment
загрузите изображения на какой-нибудь сайт и поделитесь ссылками. чтобы решить вопрос - person Hamad; 22.11.2013
comment
@DontVoteMeDown Я поделился ссылкой. Просто скопируйте содержимое и все заработает! - person Sparks_Fly; 22.11.2013
comment
@Hamad Я поделился URL-адресом. - person Sparks_Fly; 22.11.2013
comment
Спасибо, это действительно сработало... у каждого свои теории. Вещи не должны быть такими «волшебными», когда речь идет о чем-то вроде SSH-ключей. Что за крушение поезда с добавлением SSH-ключей на github. - person Samaursa; 11.03.2017

Кто-то предложил использовать $ vi ~/.ssh/id_rsa.pub, но у меня это не сработало.

Поэтому вместо этого я использовал команду $ cat ~/.ssh/id_rsa.pub на компьютере с Windows, чтобы распечатать на терминале, а затем скопировать ее.

person rollykay    schedule 18.02.2020

Если вы действительно скопировали содержимое своего ключа id_rsa.pub (в одну непрерывную строку), результат должен выглядеть так (из страница справки GitHub ssh):

ключ ssh

OP louism подтверждает проблему с копированием и вставкой:

  • По очень неясной причине копирование из emacs удалило \n после ssh-rsa, и это вызывало проблему.
  • Проблема была решена копированием из vi.
person VonC    schedule 07.05.2012

Рекомендуется от GitHub

Копирование SSH-KEY :

Я работал с xclip, чтобы скопировать ключ id_rsa.pub, вот так:

1. Установите xclip

sudo apt-get install xclip

2. Скопируйте с помощью xclip

xclip -sel clip < ~/.ssh/id_rsa.pub


Удачи.

person Aakash    schedule 20.02.2017

В окнах,

Просто скопируйте данные открытого ключа из файла ключа и удалите новые строки. Напишите это ниже в диалоговом окне, чтобы решить вашу проблему. ключ ssh-rsa

ПРИМЕЧАНИЕ. Между ssh-rsa и ключом есть пробел.

Готово.

person user3497443    schedule 25.07.2017

Просто для тех, кто смотрит в будущее, еще одна распространенная проблема — перенос слов. Например, если вы запустите cat ~/.ssh/id_rsa.pub, он может переносить строки, таким образом добавляя дополнительные \ символы на каждом разрыве строки. Удалите их, и ваш ключ должен работать нормально.

person Curtis Homan    schedule 10.03.2014

У меня возникла та же проблема, несмотря на копирование открытого ключа из вывода cat непосредственно из терминала (Cmder/ConEmu). Кажется, что метод, который вы используете для копирования открытого ключа, имеет значение. Вот способ проверить:

$ ssh-keygen -l -f ~/.ssh/id_rsa.pub
4096 SHA256:...

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

$ ssh-keygen -l -f test.pub
test.pub is not a public key file.

В моем случае я копировал ключ из вывода терминала, используя cat; вместо этого сработало получение ключа от vim. Вот способ открыть ключ в vim с включенным переносом слов:

$ vim "+set wrap" ~/.ssh/id_rsa.pub

Я подозреваю, что эмулятор терминала может иметь какое-то отношение к этому, поскольку у меня не было этой проблемы с Terminal.app.

person James    schedule 26.10.2017
comment
У меня это сработало: Putty SSH из Windows в Linux, открыть файл ключа с помощью vi, затем скопировать из шпатлевки, выбрав на экране и вставив его. Странный кот не работал. - person Alexandru Trandafir Catalin; 29.10.2019
comment
Использовал puttygen, который дал мне полную строку, а не какой-то паб-файл, который у меня валялся. - person Pysis; 13.06.2020

Если вы используете Sublime, вы можете правильно увидеть ssh-key. Проверьте, есть ли id_rsa.pub

ls -al ~/.ssh

Если он на месте, откройте его возвышенным текстом

sudo subl /home/user_name/.ssh/id_rsa.pub

Затем скопируйте и вставьте свой открытый ключ ssh.

person Kirill Zhuravlov    schedule 10.08.2016

В моем случае мне пришлось добавить дополнительное белое правило после моего электронного письма (после всей строки ключа), прежде чем оно было принято. Я узнал об этом случайно, после попытки скопировать свой ключ ssh, введенный в Gitlab.

pbcopy из моего ключа паба прямо из командной строки не сработало. Копия из gitlab с дополнительным белым правилом в конце сделала свое дело.

person stijndmd    schedule 22.02.2017

У меня только что была эта проблема. Супер разочаровывает. Я полагал, что моя ситуация могла повлиять на причину проблемы. Я использую планшет, пытаюсь настроить ключ на сайте githubs через браузер планшета (Chrome) и копирую ключ из приложения ssh, подключенного к моему удаленному серверу Linux.

В итоге произошло то, что каким-то образом, когда я скопировал ключ в браузер, он ввел несколько разрывов строк. Не только это, но и удаление символа из каждой точки, где была вставлена ​​новая строка.

Поэтому, чтобы заставить его работать, мне приходилось вручную находить каждый новый разрыв строки, а затем искать эту часть ключа, чтобы найти недостающий символ. Затем я добавил символ и удалил новую строку. После того, как я выследил каждое изменение, ключ работал нормально.

Кстати, я сам не добавлял новых разрывов строк, таких как упомянутый другими после ssh-rsa.

Надеюсь, это поможет другим. Я понятия не имею, почему это произошло. Глупо, что копирование в буфер обмена изменит скопированный текст. О, я тоже скопировал прямо из Вима.

person Jordan    schedule 01.10.2017

Если вы используете bash для окон в качестве терминала и копируете с помощью Shift + Highlighting + Ctrl-C, то это решение может вам подойти:

  1. После копирования ключа и вставки его в блокнот:

пример ssh-ключа

  1. Теперь перейдите в «Правка»> «Выбрать все» или Ctrl-A.

текст выделен

  1. Большое количество синих областей — это пробелы. Вам нужно удалить их с помощью клавиши возврата или удаления. Оставьте пробел в зеленых кругах.

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

  1. Теперь вы сможете скопировать и вставить эту отредактированную версию в github.

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

person Isaac Pak    schedule 07.02.2018

Это обычная проблема, с которой мы сталкиваемся при создании ключа. При генерации SSH мы получим два файла различий: id_rsa и id_rsa.pub. здесь файл с расширением pub является файлом держателя открытого ключа. Вы должны скопировать содержимое из этого файла и добавить на Github.

ПРИМЕЧАНИЯ: 1. Содержимое файла открытого ключа начинается с «SSH-RSA». 2. Заканчивается вашим идентификатором электронной почты Github. пример: если вы зарегистрировали Github с помощью @gmail.com, то файл pub имеет указанный идентификатор электронной почты в конце

person Gopi P    schedule 12.10.2019

при использовании против кода

code ~/.ssh/id_rsa.pub откроет .pub файл, скопирует его на github

person Muhammed Moussa    schedule 12.01.2020

Чтобы скопировать все содержимое id_rsa.pub в буфер обмена:

Выполнить> pbcopy ~/.ssh/id_rsa.pub

person Sandio    schedule 18.02.2020

Я пытался загрузить свой открытый ключ и получал сообщение «Неверный ключ». Мой формат был неправильным, так как в конце ключа были лишние пробелы. Он должен быть в формате: ssh-rsa <public-key>

person Prakhar Gurawa    schedule 27.05.2020

Если вы используете Linux или Mac, просто сделайте следующее:

$ cat ~/.ssh/id_rsa.pub

Вывод должен быть в форме, как показано ниже:

ssh-rsa somerandomcharacters user@domain

Последний шаг — скопировать содержимое и вставить его в место назначения.

person Diljit PR    schedule 18.02.2021

Копирование открытого ключа ssh в буфер обмена — это в основном хитрость, и лучший способ сделать это — прямо из терминала. Вы должны вывести этот ключ на терминал, выполнив команду cat ~/.ssh/id_rsa.public и нажав Enter. Публичный ssh ​​будет отображаться на экране терминала GitBash, а затем вам просто нужно аккуратно скопировать его, выбрав от последнего символа вашего электронного письма до начала ключа, то есть ssh rsa... Я потратил несколько дней и затем пришел к этому решению в конце концов.

person Bilal Saeed    schedule 13.03.2021

Мой ноутбук работает на macOS Big Sur версии 11.3.1, и ssh-keygen -t rsa сгенерировал очень длинный ключ с [email protected] в начале. ssh-keygen -t rsa -b 4096 работал; он создал ключ с алгоритмом ssh-rsa.

person Kirti V    schedule 29.05.2021

Просто попробуйте установить wps2019, откройте .pub на wps2019, скопируйте код и вставьте его:

person haritanshu93    schedule 17.02.2021