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

61

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

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

Затем я попытался заставить его использовать аутентификацию открытого / закрытого ключа. Я сделал следующее:

  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 22.10.2012 в 03:10
источник

6 ответов

57

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

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

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

Надеюсь, что это поможет кому-то.

    
ответ дан Dave 27.02.2013 в 02:04
7

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

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

ssh очень тонко относится к файлам perms.

    
ответ дан Sharad 13.03.2015 в 19:50
6
  1. Отредактируйте файл /etc/ssh/sshd_config .
  2. Измените PasswordAuthentication и ChallengeResponseAuthentication на yes .

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

    
ответ дан Hunter 19.08.2015 в 14:35
5

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

ответ дан Marko H 17.01.2014 в 18:58
3

РЕШИТЬ:

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