Открытый ключ 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
    

Когда я подключаюсь, используя putty или 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

Почему это происходит и как я могу это исправить?

F21
источник
В моем случае у меня есть два экземпляра 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то, что должно работать.

F21
источник
1
Я открыл authorized_keysв vi и удалил все разрывы строк, и это сработало.
Люк
1
где находится файл открытого ключа? Я использую только замазку.
Syler
1
Я сделал все вышеперечисленное, но сервер все еще отправляет. Поддерживаемые методы аутентификации недоступны (сервер отправил открытый ключ)
Аль-
Как вы узнали, что это не сработает / где вы нашли ожидаемый формат?
Майкл
Где мне нужно вставить точно, когда вы говорите: «Вставьте это в author_keys, тогда оно должно работать». @ F21
Махендер Редди Яса
20
  1. Отредактируйте /etc/ssh/sshd_configфайл.
  2. Изменить PasswordAuthenticationи ChallengeResponseAuthenticationна yes.

3a. Перезапустите SSH /etc/init.d/ssh restart.
ИЛИ
3б. лучше вы используетеservice sshd restart

охотник
источник
действительно, это полезный комментарий, если у вас есть проблемы с подключением программного обеспечения vie ftp
cnu
Это подходит для меня!
Asinox
8
Вся цель аутентификации с помощью файла ключей состоит в том, чтобы избежать аутентификации по паролю, поэтому на самом деле вам следует установить PasswordAuthenticationзначение no.
Пере
Это единственный ответ, который помог мне. Мне не требовалась аутентификация с открытым / закрытым ключом, но я получал это странное сообщение.
Серж Рогач
Спасибо ChallengeResponseAuthentication, это решило проблему для меня на Debian 10.0
realtebo
10

Надеюсь, это просто подсказка, которая может помочь кому-то еще с головными болями, которые у меня были F21 прав, что вам нужно скопировать ключ из окна PuTTYGen вместо сохранения файла, но после копирования способ вставки может оказать существенное влияние на то, будет ли работать ваш ключ или нет. Некоторые редакторы изменяют текст по мере вставки или делают что-то с символами новой строки или что-то, что делает файл author_keys недействительным.

То, что я нашел наименее вероятным, это сломать всю строку и перенаправить вывод в файл. Щелкните правой кнопкой мыши в 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
Может или не может быть хорошей идеей удалить это из вашей истории Bash впоследствии.
Джейсон Пауэрс Мюррей
@JasonPowersMurray: это открытый ключ. Система криптографии с открытым ключом разработана для обеспечения безопасности при публикации ключа, поэтому можно регистрировать открытые ключи в истории Bash и других местах.
Дэвид Кэри
9

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

В нашем случае это была проблема с разрешениями для файла authorized_keys в пользовательской папке сервера. Это должно быть -rw-r - r-- ... Это было -rw-rw-r--

ssh очень привередлив в отношении файловых перми.

Шарада
источник
Спасибо, что указал мне правильное направление. В нашем случае и владелец, и права были ошибочными.
Жолти
Как изменить права доступа к файлам, поскольку мы не можем получить доступ через SSH? любой другой способ сделать это?
Jit
1
Моя проблема была также в праве собственности, группового владения и разрешений. Как показано здесь ( stackoverflow.com/a/36808935/384670 ), разрешения, которые я должен был использовать, были 600 для файла и 700 для каталога. Я также изменил владельца и группу на этого пользователя без полномочий root.
М Кац
5

РЕШИТЬ:

  1. Вам необходимо скачать puttyGEN и сгенерировать открытый и закрытый ключи.
  2. Я назначил пароль для моего личного ключа.
  3. затем настройте закрытый ключ в putty. Putty-> SSH-> Auth-> Перейдите в свой приват.
  4. Убедитесь, что у вас одинаковый путь для закрытого и открытого ключа.
  5. Вам необходимо настроить открытый ключ на сервере. (В моем случае я поговорил с парнем на сервере и спросил, может ли он добавить мой открытый ключ на сервер). Вам нужен открытый ключ на другой стороне (сервере) соединения.
Matt.sinner
источник
2
«Убедитесь, что у вас одинаковый путь для закрытого и открытого ключа». Это не имеет к этому никакого отношения. Вам не нужно постоянно размещать свой открытый ключ рядом с вашим личным ..
user3790897
5

В моем случае причина была в том, что файл закрытого ключа (.ppk) был удален в агенте аутентификации Putty, т.е. Pageant. Я просто обновил его снова до Pageant там, и после этого соединение работало отлично.

Марко Н
источник