Открытый ключ SSH - нет поддерживаемых методов аутентификации (сервер отправил открытый ключ)

У меня есть настройка сервера 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

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

81
задан 20 August 2015 в 14:17

6 ответов

Проблема решена:

Похоже, возникла проблема с моим файлом открытого ключа. 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 , тогда все должно работать.

70
ответ дан 20 August 2015 в 14:17
  1. Редактировать файл /etc/ssh/sshd_config.
  2. Измените PasswordAuthentication и ChallengeResponseAuthentication на yes.

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

0
ответ дан 20 August 2015 в 14:17

Просто подсказка, я надеюсь, может помочь кому-то еще с головными болями, которые у меня были. 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

Надежда, которая помогает кому-то.

0
ответ дан 20 August 2015 в 14:17

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

0
ответ дан 20 August 2015 в 14:17

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

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

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

0
ответ дан 20 August 2015 в 14:17

решено:

  1. Вам необходимо скачать puttyGEN и сгенерировать открытый и закрытый ключи.
  2. Я назначил пароль для моего личного ключа.
  3. затем настройте закрытый ключ в putty. Putty-> SSH-> Auth-> Перейдите в свой приват.
  4. Убедитесь, что у вас одинаковый путь для закрытого и открытого ключа.
  5. Вам необходимо настроить открытый ключ на сервере. (В моем случае я поговорил с парнем на сервере и спросил, может ли он добавить мой открытый ключ на сервер). Вам нужен открытый ключ на другой стороне (сервере) соединения.
0
ответ дан 20 August 2015 в 14:17

Другие вопросы по тегам:

Похожие вопросы: