Почему я все еще получаю подсказку пароля с ssh с аутентификацией с открытым ключом?

Lynx набора к расширенному режиму. Опции, непривилегированный режим, усовершенствованный.

  General Preferences
  User mode                        : [Advanced___]
  Editor                           : ________
  Type of Search                   : [Case insensitive]
493
12.01.2017, 19:17
28 ответов

Удостоверьтесь полномочия на ~/.ssh каталог и его содержание являются надлежащими. Когда я сначала настроил своего ssh ключевого автора, я не имел ~/.ssh папка правильно настроила, и она вопила на меня.

  • Ваш корневой каталог ~, Ваш ~/.ssh каталог и ~/.ssh/authorized_keys файл на удаленной машине должен быть перезаписываем только Вами: rwx------ и rwxr-xr-x прекрасны, но rwxrwx--- не хороший ¹, даже если Вы - единственный пользователь в своей группе (если Вы предпочитаете числовые режимы: 700 или 755, нет 775).
    Если ~/.ssh или authorized_keys символьная ссылка, канонический путь (с расширенными символьными ссылками) проверяется.
  • Ваш ~/.ssh/authorized_keys файл (на удаленной машине) должен быть читаемым (по крайней мере 400), но Вам будет нужен он, чтобы быть также перезаписываемы (600), если Вы будете больше добавлять ключи к нему.
  • Ваш файл секретных ключей (на локальной машине) должен быть читаем и перезаписываем только Вами: rw-------, т.е. 600.
  • Кроме того, если SELinux установлен на осуществление, Вы, возможно, должны работать restorecon -R -v ~/.ssh (см., например, ошибка Ubuntu 965663 и отчет об ошибках Debian № 658675; это исправляется в CentOS 6).

¹ За исключением некоторых дистрибутивов (Debian и производные), которые исправили код для разрешения группы writability, если Вы - единственный пользователь в своей группе.

591
27.01.2020, 19:28
  • 1
    за указание restorecon. Я царапал голову в точно этой проблеме некоторое время теперь. –  Richard Barrell 03.12.2012, 16:56
  • 2
    Достаточно странно у меня были проблемы с учетной записью друг, настроенный на его получении VPS pubkey подлинная работа. Я думал, что все полномочия были корректны, но важно помнить это /home/USER должен быть 700 или 755 –  Rob 25.01.2013, 21:22
  • 3
    Также не забудьте проверять владельца и настройки группы, я использовал RSYNC для копирования по authorized_keys файлу и не заметил, что владелец/группа был установлен на 1 000 вместо корня! –  nak 16.02.2013, 19:23
  • 4
    также, добавляют-v к Вашей команде ssh для наблюдения то, что происходит с тем ключом. ssh -v user@host. –  tedder42 17.02.2014, 21:38
  • 5
    chmod -R 700 ~/.ssh работавший для меня для встречи ограничений этого ответа (RHEL 7) –  scottyseus 16.11.2015, 22:33

Эти шаги должны выручить Вас. Я регулярно использую это среди многих машин Ubuntu 10.04 на 64 бита.

[ ! -f ~/.ssh/id_rsa.pub ] && ssh-keygen -t rsa;
ssh <username>@<remote_machine> 'mkdir -p ~/.ssh'
cat ~/.ssh/id_rsa.pub | ssh <username>@<remote_machine> 'cat >> ~/.ssh/authorized_keys'

Вы могли поместить это в сценарий с некоторыми подсказками и вызвать его как

script_name username remote_machine
1
27.01.2020, 19:28
  • 1
    Там уже существует ssh-copy-id который делает последние два шага автоматически. –  jofel 17.04.2012, 16:05
  • 2
    @jofel имеет в виду, что во многих системах ssh-copy-id не существует. @Sriharsha после mkdir необходимо добавить там chmod 700 .ssh также и btw Вы не должны быть таким образом подробные с ~/.ssh, просто .ssh достаточно, так как команды выполняются в корневом каталоге так или иначе –  janos 17.04.2012, 21:09

Два комментария: это перезапишет исходный файл. Я просто скопировал бы сгенерированный открытый ключ и сделал бы что-то как:

cat your_public_key.pub >> .ssh/authorized_keys

Это добавит ключ, который Вы хотите использовать для существующего ранее списка ключей. Кроме того, некоторые системы используют файл authorized_keys2, таким образом, это - хорошая идея сделать жесткую ссылку, указывающую между authorized_keys и authorized_keys2, на всякий случай.

4
27.01.2020, 19:28
  • 1
    Да, я заметил, что также о перезаписи, но у меня не было никого, таким образом, она не имела значения. Я создал символьную ссылку на authorized_keys2, но это не помогло. –  Thom 16.04.2012, 17:46
  • 2
    Кроме того, проверьте полномочия файла/каталога. Они описаны на веб-сайте, который Вы обеспечили. –  Wojtek Rzepala 16.04.2012, 18:00
  • 3
    Ваш ~/.ssh dir должен быть 700 Вашими файлами секретных ключей, должен быть 600 Вашими файлами с открытым ключом, должны быть 644 Ваших подлинных файла (на удаленном), должны быть 644 –  Rob 16.04.2012, 18:03
  • 4
    @Rob, который был проблемой. Если бы Вы отправили бы это как ответ, я принял бы его. –  Thom 17.04.2012, 12:08

Я столкнулся с трудностями, когда корневой каталог на удаленном не имеет соответствующих полномочий. В моем случае пользователь изменил домашний dir на 777 для некоторого локального доступа с в команде. Машина не могла соединиться с ssh ключами больше. Я изменил разрешение на 744, и оно начало работать снова.

28
27.01.2020, 19:28
  • 1
    , у Нас была эта проблема также - 755 на домашних директорах, зафиксировал ее –  davidfrancis 18.07.2012, 17:52
  • 2
    мне установили полномочия на 777 и это было проигнорировано, Спасибо!!! –  ka_lin 04.07.2016, 16:56

Ваш домашний dir шифруется? Если так, для Вашей первой ssh сессии необходимо будет обеспечить пароль. Вторая ssh сессия к тому же серверу работает с подлинным ключом. Если это верно, Вы могли переместить Ваш authorized_keys к незашифрованному dir и изменению путь в ~/.ssh/config.

То, что я закончил тем, что делал, было, создают a /etc/ssh/username папка, принадлежавшая имени пользователя, с корректными полномочиями, и помещенный authorized_keys зарегистрируйте там. Затем измененный директива AuthorizedKeysFile в /etc/ssh/config к:

AuthorizedKeysFile    /etc/ssh/%u/authorized_keys

Это позволяет многочисленным пользователям иметь этот ssh доступ, не ставя под угрозу полномочия.

55
27.01.2020, 19:28
  • 1
  • 2
    Этот ответ является существенным и помог мне - для любого задающегося вопросом, является ли это проблемой - можно видеть "pam_ecryptfs: файл Пароля, перенесенный" в Ваш auth.log; так или иначе этого не было достаточно, чтобы предложить мне помнить, что homedir был зашифрован. Также можно найти, что первый вход в систему просит пароли, последующие сессии не делают (так как он дешифрован, пока другие сессии открываются). –  pacifist 20.06.2014, 11:21
  • 3
    Святое дерьмо я искал wayyyy на долго, чтобы решить тот вопрос, заправить Вас так! –  h3. 13.02.2015, 19:33

Если у Вас есть корневой доступ к серверу, простой способ решить такие проблемы состоит в том, чтобы выполнить sshd в режиме отладки путем издания чего-то как /usr/sbin/sshd -d -p 2222 на сервере (полный путь к sshd требуемому исполняемому файлу, which sshd может помочь), и затем соединяющийся от клиента с ssh -p 2222 user@host. Это вынудит демона SSH остаться на переднем плане и отобразить отладочную информацию о каждом соединении. Ищите что-то как

debug1: trying public key file /path/to/home/.ssh/authorized_keys
...
Authentication refused: bad ownership or modes for directory /path/to/home/

Если не возможно использовать альтернативный порт, можно временно остановить демона SSH и заменить его одним в режиме отладки. Остановка демона SSH не уничтожает существующие соединения, таким образом, возможно сделать это через удаленный терминал, но несколько опасный - если соединение действительно становится поврежденным так или иначе в то время, когда замена отладки не работает, Вы заблокированы из машины, пока Вы не можете перезапустить его. Команды потребовали:

service ssh stop
/usr/sbin/sshd -d
#...debug output...
service ssh start

(В зависимости от Вашего дистрибутива Linux сначала / последняя строка могла бы быть systemctl stop sshd.service / systemctl start sshd.service вместо этого.)

152
27.01.2020, 19:28
  • 1
    я просто попробовал это... и это хорошо работает, когда я работаю sshd -d, но сбои, после того как я на самом деле работаю service sshd start. Я уверен, что это просто, но я не гуру Linux. Какие-либо мысли? –  N Rohler 30.11.2012, 07:18
  • 2
    Для ссылки это сообщение объясняет решение SELinux, которое решило мою проблему. –  N Rohler 30.11.2012, 07:36
  • 3
    я также испытывал затруднения заставить аутентификацию с открытым ключом работать и я был вполне уверен, что полномочия каталога не были проблемой. После выполнения SSH в режиме отладки я быстро узнал, что был неправ, и полномочия были проблемами. –  ub3rst4r 14.05.2014, 08:36
  • 4
    Большой совет, моя пользовательская папка, был с неправильными полномочиями. –  gdfbarbosa 18.12.2014, 12:23
  • 5
    . Из всех причин моему пользователю не разрешили войти в систему, потому что оболочка, указанная ansible (/bin/zsh) на пользовательском создании, не существовала. Я никогда не предполагал бы это. –  chishaku 27.10.2015, 02:56

В/etc/selinux/config файле, изменяющем SELINUX на отключенный от осуществления сделанного ssh без пароля, работают успешно.

Ранее я могу сделать это на одном пути. Теперь от bothways я могу сделать ssh без пароля.

3
27.01.2020, 19:28

Гарантируйте это AuthorizedKeysFile точки к правильному местоположению, использовать %u как заполнитель для имени пользователя:

# /etc/ssh/sshd_config
AuthorizedKeysFile /home/%u/authorized_keys

Может случиться так, что просто необходимо не прокомментировать строку:

AuthorizedKeysFile .ssh/authorized_keys

Следите за этим, необходимо перезагрузить ssh сервис для изменений для происхождения:

service sshd reload
6
27.01.2020, 19:28

Просто попробуйте эти после команд

  1. ssh-keygen

    Нажмите клавишу Enter, пока Вы не получите подсказку

  2. ssh-copy-id -i root@ip_address

    (Это однажды попросит пароль хост-системы),

  3. ssh root@ip_address

    Теперь необходимо смочь войти в систему без любого пароля

31
27.01.2020, 19:28
  • 1
    На котором сервере? –  Amalgovinus 17.06.2014, 22:47
  • 2
    @Amalgovinus, Очевидно, Вы выполняете это на клиенте, не машине, которую Вы подключаете с - Вы не хотите копию своего закрытого ключа на сервере! :) –  nevelis 24.09.2014, 19:09
  • 3
    Обратите внимание на то, что обычно разрешение удаленных корневых логинов не является рекомендуемой практикой безопасности. –  arielf 22.06.2015, 21:21

Мое решение состояло в том, что учетная запись была заблокирована. Сообщение показало в/var/log/secure: Пользователь не позволил, потому что учетной записью является заблокированное Решение: дайте пользователю новый пароль.

4
27.01.2020, 19:28
  • 1
    я зафиксировал его путем изменения поля пароля в /etc/shadow для этого пользователя от ! кому: *. После того, как та аутентификация по паролю все еще невозможна, но пользователь больше не блокируется. –  user3132194 07.04.2016, 14:53

После копирования ключей к удаленной машине и вставлению их authorized_keys необходимо сделать что-то вроде этого:

ssh-agent bash
ssh-add ~/.ssh/id_dsa or id_rsa
35
27.01.2020, 19:28
  • 1
    На самом деле не Вы не делаете. ssh автоматически использует ~/.ssh/id_rsa (или id_dsa), не имея необходимость использовать ключевой агент. –  Patrick 07.11.2013, 03:29
  • 2
    Это может все еще быть полезным советом, если нужно было указать по-другому именованный ключ ~/.ssh/config (например, на хосте *.mydomain.org... IdentityFile ~/.ssh/some_limited_use.pub - ssh-добавляет ~/.ssh/some_limited_use.pub). –  89c3b1b8-b1ae-11e6-b842-48d705 03.02.2014, 14:11

У меня была подобная проблема с ssh. В моем случае проблема состояла в том, что я установил hadoop cloudera (от об/мин на песнях 6), и он создал пользователя hdfs с корневым каталогом

/var/lib/hadoop-hdfs (не стандартный /home/hdfs).

Я изменился в/etc/passwd /var/lib/hadoop-hdfs кому: /home/hdfs, перемещенный корневой каталог к новому местоположению и теперь я могу соединиться с аутентификацией с открытым ключом.

1
27.01.2020, 19:28

Одна вещь, в которой я был неправ, - это владение моим домашним каталогом в системе сервера. Серверная система была установлена ​​по умолчанию: по умолчанию, поэтому я:

chown -R root:root /root

И это сработало. Другой дешевый обходной путь - отключить StrictModes: StirctModes no. в sshd_config. Это, по крайней мере, скажет вам, хороши ли протоколы обмена ключами и подключения. Тогда вы можете пойти поохотиться на плохие разрешения.

3
27.01.2020, 19:28

Для меня решение было противоположным Войтека Жепалы : Я не заметил, что все еще использую authorized_keys2, который был устаревшим . Моя установка ssh перестала работать в какой-то момент, предположительно, когда сервер был обновлен. Переименование .ssh/authorized_keys2 в .ssh/authorized_keys исправило проблему.

D'oh!

2
27.01.2020, 19:28

SELinux на Redhat / Centos 6 имеет проблему с аутентификацией PUBKey , вероятно, когда некоторые файлы созданы SELinux, не устанавливает его правильно.

Чтобы вручную зафиксировать ACL SELINUX для пользователя root:

restorecon -R -v /root/.ssh
14
27.01.2020, 19:28

Мы столкнулись с той же проблемой, и мы следили за шагами в ответе. Но это все еще не сработало для нас. Наша проблема заключалась в том, что логин работал с одного клиента, но не из другого (каталог .ssh был установлен NFS, и оба клиента использовали одни и те же клавиши).

Итак, мы должны были пойти на один шаг дальше. Запустив команду ssh в режиме Verbose, вы получаете много информации.

ssh -vv user@host

То, что мы обнаружили, что ключ по умолчанию (ID_RSA) не был принят, а вместо этого клиент SSH предложил ключевое соответствие клиентского имени хоста:

debug1: Offering public key: /home/user/.ssh/id_rsa                                    
debug2: we sent a publickey packet, wait for reply                                        
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Offering public key: /home/user/.ssh/id_dsa                                    
debug2: we sent a publickey packet, wait for reply                                        
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Offering public key: user@myclient                                          
debug2: we sent a publickey packet, wait for reply                                        
debug1: Server accepts key: pkalg ssh-rsa blen 277                  

, очевидно, это не будет работать с какого-либо другого клиента.

Итак, решение в нашем случае было переключение ключа RSA по умолчанию на тот, который содержал пользователь @ MyClient. Когда ключ по умолчанию, нет проверки на имя клиента.

Затем мы столкнулись с другой проблемой, после коммутатора. По-видимому, ключевые ключи кэшируются в местном агенте SSH, и мы получили следующую ошибку в журнале отладки:

'Agent admitted failure to sign using the key'

Это было решено путем перезарядки ключей в SSH-агент:

ssh-add
14
27.01.2020, 19:28

У меня только что имела эту же проблему, и для меня решение было установлено USEPAM на . Видите, даже с PasswordAuthenticatication установлено на NO , вы все равно получите клавиатуру-интерактивное , и в моем случае моя локальная программа SSH сохранила по умолчанию для этого некоторая причина.

Дополнительный фон для того, чтобы помочь кому-либо с той же ситуацией: я подключаюсь от хоста, бегающего Dropbear к одному запуску OpenSSH. С PasswordAuthicentication и USEPAM Оба набора NO на удаленном компьютере, я получу следующее сообщение, если я введем SSH User @ Server :

ssh: Connection to user@server:22 exited: Disconnect received

Предоставление файла идентификации с -I , все работает как ожидалось.

Здесь может быть немного больше информации.

1
27.01.2020, 19:28

Чтобы воспользоваться преимуществами безопасности -execdir (который на самом деле заключается в том, чтобы убедиться, что команда не получает путь с несколькими компонентами) и получить подсказку, можно использовать:

find . -name hello.c -okdir rm -f {} \;

(обратите внимание, что по крайней мере реализация GNU find не избегает имен файлов способом, подходящим для терминалов, как это делает GNU rm (wr

-121--97788-

эхо - настройка терминального устройства (дисциплина в драйвере tty kernel), termcap - это управление терминалом (реальным или эмулятором) через побег последовательностей, это две отдельные вещи.

Здесь необходимо запретить приложению выполнять определенный ioctl . Одним из способов может быть отсоединение его от терминала.

socat - exec:okular,pty,raw

Запускает okular , подключенный к другому псевдотерминалу, и socat передает данные с терминала на этот.

Чтобы передать произвольные аргументы, с zsh , bash или ksh93 :

okular() {
  CODE=$(printf '%q ' exec okular "$@"
        ) socat - 'system:"eval \"$CODE\"",pty,raw'
}
-121--133622-

я столкнулся с аналогичной проблемой и следовал шагам в режиме отладки.

/usr/sbin/sshd -d

Это показало следующий результат

debug1: trying public key file /root/.ssh/authorized_keys
debug1: fd 4 clearing O_NONBLOCK
Authentication refused: bad ownership or modes for directory /root
debug1: restore_uid: 0/0
debug1: temporarily_use_uid: 0/0 (e=0/0)
debug1: trying public key file /root/.ssh/authorized_keys2
debug1: Could not open authorized keys '/root/.ssh/authorized_keys2': No such file or directory
debug1: restore_uid: 0/0
Failed publickey for root from 135.250.24.32 port 54553 ssh2
debug1: userauth-request for user root service ssh-connection method gssapi-with-mic

Он действительно был запутанным

[root@sys-135 ~]# ls -l /
drwxrwxrwx.   2 root root     4096 Dec 14 20:05 bin
drwxrwxrwx.   5 root root     1024 May  6  2014 boot
drwxrwxrwx.   2 root root     4096 Dec  2  2013 cgroup
drwxrwxrwx.  10 root root     1024 Sep 25 23:46 data
drwxrwxrwx. 124 root root    12288 Dec 16 10:26 etc
drwxrwxrwx.  11 root root     4096 Jan 14  2014 lib
drwxrwxrwx.   9 root root    12288 Dec 14 20:05 lib64
drwxrwxrwx.   2 root root    16384 Jan 10  2014 lost+found
drwxrwxrwx.   2 root root     4096 Jun 28  2011 media
drwxr-xr-x.   2 root root        0 Dec 10 14:35 misc
drwxrwxrwx.   2 root root     4096 Jun 28  2011 mnt
drwxrwxrwx.   4 root root     4096 Nov 24 23:13 opt
dr-xr-xr-x. 580 root root        0 Dec 10 14:35 proc
drwxrwxrwx.  45 root root     4096 Dec 16 10:26 root

Он показал, что корневой каталог имеет разрешения для каждого. Мы изменили его, чтобы у других не было разрешений.

[root@sys-135 ~]# chmod 750 /root

Проверка подлинности ключа запущена.

4
27.01.2020, 19:28

Это будет конфигурация SSH miss на стороне сервера. Необходимо отредактировать файл sshd_config на стороне сервера. Он находится в /etc/ssh/sshd_config. В этом файле измените переменные

  • 'yes' на 'no' для ChallengeResponseAuthentication, PasswordAuthentication, UsePAM

  • 'no' на 'yes' для PubkeyAuthentication

Основано на http://kaotickreation.com/2008/05/21/disable-ssh-password-authentication-for-added-security/

9
27.01.2020, 19:28

В прошлом я наткнулся на несколько руководств, описывающих, как добиться настройки ssh без пароля, но некоторые из них, к сожалению, ошибочны.
Давайте начнем сначала и проверим каждый шаг:

  1. FROM CLIENT - Генерируем ключ: ssh-keygen -t rsa
    Открытый и закрытый ключ (id_rsa.pub и id_rsa) будут автоматически сохранены в каталоге ~/.ssh/.
    Настройка будет проще, если вы используете пустую парольную фразу. Если вы не хотите этого делать, то продолжайте следовать этому руководству, но также проверьте пункт ниже.

  2. FROM CLIENT - Скопируйте открытый ключ на сервер : ssh-copy-id user@server
    Открытый ключ клиента будет скопирован в расположение сервера ~/.ssh/authorized_keys.

  3. FROM CLIENT - Подключение к серверу: ssh user@server

Теперь, если после описанных трех шагов все еще не работает, попробуем следующее:

  • Проверьте разрешения папки ~/ssh на машине клиента и сервера.
  • Проверьте /etc/ssh/sshd_config на сервере, чтобы убедиться, что опции RSAAuthentication, PubkeyAuthentication и UsePAM не отключены, они могут быть включены по умолчанию с помощью yes.
  • Если вы ввели кодовую фразу при генерации клиентского ключа, то вы можете попробовать ssh-agent и ssh-add для достижения беспарольных соединений в вашей сессии.
  • Проверьте содержимое /var/log/auth.log на сервере, чтобы найти проблему, почему аутентификация ключа вообще пропускается.
2
27.01.2020, 19:28

Проверив разрешения и попробовав несколько других решений, перечисленных здесь, я наконец удалил каталог ssh на сервере, снова настроив свой открытый ключ.

Серверные команды:

# rm -rf ~/.ssh

Локальные команды:

# ssh-copy-id user@192.168.1.1        # where <user> is your username and <192.168.1.1> is the server IP
2
27.01.2020, 19:28

У меня была точно такая же проблема с подключением PuTTY к машине с Ubuntu 16.04. Это озадачивало, потому что программа pscp PuTTY прекрасно работала с тем же ключом (, и тот же ключ работал в PuTTY для подключения к другому хосту ).

Благодаря ценному комментарию @UtahJarhead я проверил свой файл /var/log/auth.log и обнаружил следующее:

sshd[17278]: userauth_pubkey: key type ssh-dss not in PubkeyAcceptedKeyTypes [preauth]

Оказывается, более новые версии OpenSSH по умолчанию не принимают ключи DSA. Как только я переключился с DSA на ключ RSA, все заработало нормально.

Другой подход :В этом вопросе обсуждается, как настроить сервер SSH для приема ключей DSA:https://superuser.com/questions/1016989/ssh-dsa-keys-no-longer-work-for-password-less-authentication?lq=1

3
27.01.2020, 19:28

В моем случае у меня были все права, и даже при запуске ssh с флагом -vvv я не мог понять, в чем проблема.

Итак, я сгенерировал новый сертификат на удаленном хосте

ssh-keygen -t rsa -C "your_email@example.com"

и скопировал сгенерированные ключи на локальный компьютер и добавил новый открытый ключ в ключи ~/.ssh/authorized _на удаленном хосте

cat id_rsa.pub >> authorized_keys

Использование сгенерированных ключей при подключении к удаленному хост-компьютеру теперь работает. Так что, если другие решения не сработают, это еще одна вещь, которую стоит попробовать.

0
27.01.2020, 19:28

Еще один вариант — это вариант ответа @Jagadish:наstraceдемона ssh.

У него есть существенное преимущество: нам не нужно останавливать sshd, что может привести к полной блокировке, если что-то пойдет не так.

Во-первых, мы находим pid основного процесса sshd. Здесь мы можем увидеть это, выполнив pstree -pa|less.

  |-sshd,633 -D  <-- THIS IS WHAT WE WANT!
  |   `-sshd,21973   
  |       `-sshd,21996    
  |           `-bash,22000
  |               `-screen,638 -r

Зная, что pid равен 633, мы можем straceего, следуя его потомкам:

strace -p 633 -s 4096 -f -o sux

В результате все, что сделал этот sshd и его дочерние процессы, будут переданы -в файл с именем suxв локальном каталоге.

Затем воспроизведите проблему.

У него будет огромный список журналов вызовов ядра, которые в основном непонятны/неактуальны для нас, но не везде. В моем случае важным было вот это:

6834  sendto(4, "<38>Jan 15 18:49:21 sshd[6834]: User cica not allowed because account is locked\0", 84, MSG_NOSIGNAL, NULL, 0) = 84

Имелось в виду, что sshd пытался запротоколировать сообщение Пользователь cica не разрешен, т.к. учетная запись заблокирована-только не смог, т.к. логирование недостаточно подробное для этого. Но мы уже знаем, что публичный ключ был отклонен, потому что учетная запись была заблокирована.

Это еще не решение -теперь надо гуглить, что означает "заблокированный аккаунт" в случае с sshd. Скорее всего, это будет какое-то тривиальное /etc/passwd, /etc/shadowволшебство,но главное сделано -проблема не таинственная, а легко поддающаяся отладке/поиск в Google.

0
27.01.2020, 19:28

На сервере:

$ ls -lh /home
$ sudo chmod 700 /home/$USER

Это было directory permission issue. На сервере было 777, поэтому I changed it back to 700. Это fixedмоя проблема с ssh password less login failureдаже после копирования $USER/.ssh/id_rsa.pubна сервер $USER/.ssh/authorized_keys.

2
27.01.2020, 19:28

Если сервер принимает как закрытый ключ, так и методы аутентификации по имени пользователя/паролю, а затем в случае сбоя закрытого ключа он просто вернется к запросу имени пользователя/пароля без отображения какой-либо ошибки.

Вы можете использовать флаг -vvv, чтобы определить, была ли попытка получить закрытый ключ, (и какие именно ключи )и почему ключи (с )не работают. Пример:ssh -T -vvv myHost.com. В качестве альтернативы вы можете использовать LogLevel DEBUG3в ~/.ssh/config.

Распространенный сбой заключается в том, что сервер отклоняет ключ. В этом случае вы увидите что-то вроде этого:

debug1: Next authentication method: publickey
debug1: Trying private key: /c/Users/myUsername/.ssh/id_rsa
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: password
myUsername@myServer.com's password:

Согласно официальной спецификации протокола SSH (RFC 4252 ), пакеты аутентификации имеют следующие значения:

SSH_MSG_USERAUTH_REQUEST    50
SSH_MSG_USERAUTH_FAILURE    51
SSH_MSG_USERAUTH_SUCCESS    52

Это означает, что debug3: receive packet: type 51указывает, что сервер отклонил ключ.

1
07.05.2020, 01:45

У меня была такая же проблема при подключении с Raspbian8 на Fedora34.

Ошибка отладки, которую я получил::

userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]

Решение состояло в том, чтобы добавитьssh -rsaк значению PubkeyAcceptedAlgorithms в

/etc/crypto-policies/back-ends/opensshserver.config

и перезапустите службу

thanks to Dave @ https://wiki.xdroop.com/space/Fedora/34/SSH+Pubkey+doesn%27t+work for this solution

0
04.06.2021, 18:04

Я попытался войти в аккаунт коллеги без пароля, вставив id _rsa.pub в ее авторизованный файл _ключей. Я получил права доступа ко всем соответствующим файлам, но все равно не смог добиться успеха с паролем -без входа в систему.

Оказывается, так как я создал авторизованный файл ключей _с правами root, мне пришлось chown и chgrp на те, которые соответствуют ее профилю.

sudo chown ${username} -R /home/${username}/.ssh
sudo chgrp ${groupname} -R /home/${groupname}/.ssh

Эту ошибку было легко обнаружить при использовании режима тройного подробного вывода ssh -vvv.

0
11.11.2021, 18:57

Теги

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