Що означає ця помилка ssh?


9

Це моя остання інстанція. Я годинами намагаюся з’ясувати проблему.

Ось угода: я скопіював свій приватний ключ з машини №1 на машину №2. Машина №1 здатна підключитися через ssh до сервера з моїм відкритим ключем просто чудово, але машина №2 дає наступний вихід при спробі підключення до сервера:

$ ssh -vvv -i /home/kevin/.ssh/kev_rsa user@192.168.1.244 -p 22312
OpenSSH_5.3p1 Debian-3ubuntu6, OpenSSL 0.9.8k 25 Mar 2009
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to 192.168.1.244 [192.168.1.244] port 22312.
debug1: Connection established.
debug3: Not a RSA1 key file /home/kevin/.ssh/kev_rsa.
debug2: key_type_from_name: unknown key type '-----BEGIN'
debug3: key_read: missing keytype
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace

...


Permission denied (publickey).

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

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

Я боровся з цим. Якщо я міг би отримати трохи більше інформації про те, чому це не подобається моєму ключу, я можу виправити це, я впевнений. Хтось має ідеї з цього приводу? Чи є десь метадані, які вказують ssh, що файл насправді є ключем RSA?


А що говорить /var/log/auth.logна сервері?
живіт

Для уточнення відкритий ключ з машини 1 підключається до сервера. Приватний ключ від машини 1, що працює на машині 2, не підключиться до сервера?
Друга

У мене однакова пара ключів на обох машинах, а відкритий ключ - на сервері. Я копіюю вставлені ключі з клієнтської машини 1, яка не має проблем із підключенням до сервера, сюди на свій домашній комп'ютер (машина 2), який має цю проблему автентифікації.
Кевін

@womble, на жаль, я не можу отримати доступ до сервера, якщо мені вдасться це зрозуміти, я зможу сш вправо .. Ааа, іронія ...;)
kevin

Які операційні системи на двох клієнтських машинах? Чи може передача приватного ключа змінити закінчення рядків або ввести текст (можливо, порожні рядки або пробіли) перед початковим рядком?
Стобор

Відповіді:


7

На мій досвід, дві найпоширеніші помилки аутентифікації на основі ключів

  1. Недоречно широкі дозволи для $HOME/.sshкаталогу
  2. Помилка копіювання відкритого ключа у віддалену систему

Дозволи файлів

OpenSSH робить багато, намагаючись захистити вас від себе. Це найбільш впливає на користувача - це застосовувати жорсткі обмеження щодо доступу до вашої локальної папки ssh. Ви дійсно хочете, щоб ви, і тільки ви, отримували доступ до каталогу. Ну, і будь-хто, хто має uid = 0, але немає нічого хорошого. Отже, вам потрібно просто змінити свої дозволи: chmod -R go-rwx ~/.sshце видалить читання, запис та виконання прав на будь-які файли під каталогом .ssh від усіх користувачів, крім власника, тобто ви .

Випуски авторизованих ключів

Файл, що містить ваш відкритий ключ, зазвичай $HOME/.ssh/authorized_keysповинен відповідати дуже специфічній формі для SSH, щоб зрозуміти, як прийняти приватний ключ. Кожен ключ повинен складатися щонайменше з 2 полів

  1. Тип використовуваного ключа (RSA, DSA, RSA1 тощо)
  2. Ключ

Кожен ключ, разом з усіма його параметрами та складовими частинами, повинен бути вказаний по одному на рядок у цьому файлі. Оскільки клавіші, як правило, дуже довгі, вони часто загортаються і відображаються як два рядки на вашому терміналі. Іноді це спричинить хаос при спробі копіювання / вставки, оскільки іноді одна або кілька нових рядків вставлятимуться скрізь, де клавіша буде перекрита на екрані. Виправлення цієї проблеми може бути трохи складніше для початківців оболонок.

Спробуйте запустити
wc -l ~/.ssh/authorized_keys
Це надрукує кількість рядків у файлі. Порівняйте це число з кількістю ключів, які ви очікуєте у файлі. Якщо ви будете приймати лише цей один ключ, ви також можете просто зробити копію файла відкритого ключа, оскільки він має той самий формат, що і файл ваших авторизованих ключів. Щось на кшталт
scp -p ~/.ssh/kev_rsa.pub remotehost:~/.ssh/authorized_keys
або, якщо у вас є відкритий ключ у тій самій системі, що ви можете зробити
cat ~/.ssh/kev_rsa.pub >> ~/.ssh/authorized_keys

Крім того, загляньте у файл журналу на віддаленому хості та перевірте, чи там повідомляються про якісь помилки. Файли, швидше за все, будуть /var/log/secure.logабо /var/log/auth.


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

1
І знову я не можу отримати доступ до сервера. Тут вся проблема ...;)
Кевін

@Scott: make a copy of the private key fileмає бути відкритим ключем (як показано у ваших прикладах)
mlp

0

Хоча вам, ймовірно, доведеться генерувати нову пару ключів для машини 2 для підключення до сервера. Часто у відкритому ключі буде вказано ім’я користувача та машини тих, хто їх створив. Це повинно бути видно у вашому файлі санкціонованих_кейсів на сервері.


2
У мене було враження, що вони ігнорують тих, що вони - просто коментарі, які допоможуть вам ідентифікувати їх під час перегляду санкціонованих_кілей. І все одно, знову ж таки, я просто копіюю / вставляю ключі. Так вони ідентичні. Я серйозно сумніваюся, що він перевіряє ваше ім’я хоста. Якби це сталося, я міг би це легко змінити. Що за чорт, я все одно спробую ...
Кевін

0

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


-3

Спробуйте порівняти файли налаштування ssh між двома серверами.

тобто. щось на кшталт cat / etc / sshd_config


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