Відкритий ключ SSH - Немає доступних підтримуваних методів аутентифікації (відкритий сервер надсилається)


80

У мене встановлення сервера 12.10 у віртуальній машині з встановленою мережевою мережею (по суті, буде розглядатися як комп'ютер, підключений до мого комутатора).

Я встановив opensshd через apt-getі зміг підключитися до сервера за допомогою putty з моїм іменем користувача та паролем.

Потім я почав намагатися змусити його використовувати аутентифікацію відкритих / приватних ключів. Я зробив наступне:

  1. Створено ключі за допомогою PuttyGen.
  2. Переміщено відкритий ключ у /etc/ssh/myusername/authorized_keys(я використовую зашифровані домашні каталоги).
  3. Налаштуйте sshd_configтак:

    PubkeyAuthentication yes
    AuthorizedKeysFile /etc/ssh/%u/authorized_keys
    StrictModes no
    PasswordAuthentication no
    UsePAM yes
    

Коли я підключаюсь за допомогою шпаклівки або WinSCP, я отримую помилку: Немає доступних підтримуваних методів аутентифікації (сервер надіслав відкритий ключ).

Якщо я запускаю sshdв режимі налагодження, я бачу:

PAM: initializing for "username"
PAM: setting PAM_RHOST to "192.168.1.7"
PAM: setting PAM_TTY to "ssh"
userauth-request for user username service ssh-connection method publickey [preauth]
attempt 1 failures 0 [preauth]
test whether pkalg/pkblob are acceptable [preauth[
Checking blacklist file /usr/share/ssh/blacklist.RSA-1023
Checking blacklist file /etc/ssh/blacklist.RSA-1023
temporarily_use_uid: 1000/1000 (e=0/0)
trying public key file /etc/ssh/username/authorized_keys
fd4 clearing O_NONBLOCK
restore_uid: 0/0
Failed publickey for username from 192.168.1.7 port 14343 ssh2
Received disconnect from 192.168.1.7: 14: No supported authentication methods available [preauth]
do_cleanup [preauth]
monitor_read_log: child log fd closed
do_cleanup
PAM: cleanup

Чому це відбувається і як я можу це виправити?


У моєму випадку у мене є два екземпляри AWS. Один з них працює бездоганно, інший працює під час підключення через Intellij Idea, але не від Putty, але він працював на початку. Тож у моєму випадку має бути щось про шпаклівку
Marian Klühspies

Відповіді:


70

Проблема вирішена:

Схоже, виникла проблема з моїм файлом відкритого ключа. PuttyGen створить файл відкритого ключа, який виглядає так:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20121022"
AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwu
a6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOH
tr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/u
vObrJe8=
---- END SSH2 PUBLIC KEY ----

Однак це не спрацює, тому потрібно відкрити ключ у PuttyGen, а потім скопіювати його звідти (це призводить до того, що ключ буде у правильному форматі та в 1 рядку):

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwua6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOHtr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/uvObrJe8= rsa-key-20121022

Вставте це в authorized_keysпотім, воно повинно працювати.


1
Я відкрив authorized_keysin vi та усунув усі розриви рядків, і це спрацювало.
Лука

1
де знаходиться файл відкритого ключа? я використовую лише шпаклівку.
Сілер

1
Я все робив вище, але все-таки сервер надсилає Немає підтримуваних методів аутентифікації (сервер надіслав відкритий ключ)
Al-Alamin

Як ви знали, що це не працює / де ви знайшли очікуваний формат?
Майкл

Де мені точно потрібно вставити, коли ви говорите "Вставте це в дозволені_кейси, тоді воно повинно працювати". @ F21
Mahender Reddy Yasa

19
  1. Відредагуйте /etc/ssh/sshd_configфайл.
  2. Змінити PasswordAuthenticationі ChallengeResponseAuthenticationв yes.

3а. Перезавантажте ssh /etc/init.d/ssh restart.
АБО
3b. краще використовуватиservice sshd restart


Дійсно, це корисний коментар, якщо у вас є проблеми з підключенням програмного забезпечення vie ftp
cnu

Це працює для мене!
Asinox

8
Вся мета аутентифікації з допомогою файлу ключа, щоб уникнути перевірки автентичності пароля, так що на насправді ви повинні встановити PasswordAuthenticationв no.
Пере

Це єдина відповідь, яка мені допомогла. Мені не потрібна автентифікація публічного / приватного ключа, але я отримував це дивне повідомлення.
Серж Рогач

Дякую ChallengeResponseAuthentication, це вирішило мені проблему на Debian 10.0
realtebo

10

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

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

echo [right-click-to-paste-here] > /etc/ssh/username/authorized_keys

Ви закінчите це:

echo ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwua6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOHtr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/uvObrJe8= rsa-key-20121022 > /etc/ssh/username/authorized_keys

Ще одна перевага цього методу полягає в тому, що ви можете додати кілька ключів таким чином, використовуючи >> для додавання, а не> для перезапису, наприклад:

echo ssh-rsa AAAAB3<...snip...>rJe8= rsa-key-20121022 >> /etc/ssh/username

Сподіваюся, що хтось допомагає.


Це не працює на 4096 бітових клавіш ... це перевищує термінальну межу для символів, я думаю
Freedo

1
Можливо, або не буде гарною ідеєю видалити це з історії башів.
Джейсон Пауерс Мюррей

@JasonPowersMurray: це відкритий ключ. Система криптографії відкритих ключів розроблена так, щоб залишатись захищеною, коли ключ опублікований, тому нормально реєструвати відкриті ключі в історії bash та інших місцях.
Девід Кері

9

Ми вже використовували потрібний тип ключа (ppk замість pem).

У нашому випадку виникла проблема з дозволами на файли для санкціонованих_ ключів у папці користувача сервера. Це повинно бути -rw-r - r-- ... Це було -rw-rw-r--

ssh дуже вибагливий щодо файлових візків.


Дякую, що вказали на мене в правильному напрямку. У нашому випадку і власник, і дозволи були помилковими.
Zsolti

як змінити дозволи на файли, оскільки ми не маємо доступу через ssh? будь-який інший спосіб зробити це?
jit

1
Моя також була проблемою власності, групування та дозволів. Як показано тут ( stackoverflow.com/a/36808935/384670 ), дозволи, які я повинен був використовувати, були 600 для файлу та 700 для каталогу. Я також змінив власника та групу на цього некорінного користувача, про який йде мова.
М Кац

5

РЕШЕНО:

  1. Вам потрібно завантажити puttyGEN та генерувати відкритий та приватний ключ.
  2. Я призначив пароль своєму приватному ключу.
  3. потім налаштуйте приватний ключ у putty. Шпаклівка-> SSH-> Auth-> Перегляд у приват.
  4. Переконайтеся, що у вас однаковий шлях для приватного та відкритого ключа.
  5. Потрібно налаштувати відкритий ключ на сервері. (У моєму випадку я поговорив із хлопцем із сервера і запитав, чи може він додати мій відкритий ключ до сервера). Вам потрібен відкритий ключ на іншій стороні (сервері) з'єднання.

2
"Переконайтеся, що у вас є однаковий шлях для приватного та відкритого ключа." Це не має нічого спільного. Вам не доведеться розміщувати свій відкритий ключ поруч із приватним ..
user3790897

5

У моєму випадку причиною було те, що файл приватного ключа (.ppk) був видалений агентом автентифікації Putty, тобто Pageant. Я просто оновив його знову на Pageant і там після цього прекрасно працювало з'єднання.

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