ssh більше не дозволяє аутентифікацію відкритого ключа


22

Нещодавно моя машина перестала приймати аутентифікацію вхідного відкритого ключа. У мене є робочий стіл ubuntu 11.04, на який я заходжу з машини Windows. Я використовую шпаклівку з конкурсом. Я можу підключитися, але лише за допомогою інтерактивної автентифікації пароля, а не з моїм ключем rsa, який я встановив.

Я вже переконався, що ключ вказаний у ~ / .ssh / pooblasti_keys. Як це виправити і що я перевіряю?


2
Спочатку перевірте , що всі три ~, ~/.sshі ~/.ssh/authorized_keysбудуть доступні для запису тільки вам (зокрема , дозвіл на запису не групи). Знайдіть /var/log/auth.logзаписи журналу, створені під час ваших спроб входу. Скопіюйте їх у своє запитання (якщо бажаєте, відредагуйте імена для конфіденційності). Також перевірте, чи проблема полягає лише на сервері: скопіюйте приватний ключ на машину Linux (вам потрібно буде конвертувати файл приватного ключа PuTTY у формат OpenSSH) і подивіться, чи ssh localhostпрацює.
Жил "ТАК - перестань бути злим"

мій домашній каталог чомусь був записаний. Це і виправило. Поставте це як відповідь, щоб я міг його прийняти.
Ендрю Редд

Відповіді:


28

Якщо аутентифікація відкритих ключів не працює: переконайтеся, що з боку сервера, домашнього каталогу ( ~), ~/.sshкаталогу та ~/.ssh/authorized_keysфайлу, всі вони можуть записувати лише їх власник . Зокрема, жодна з них не повинна бути написана групою (навіть якщо користувач один у групі). chmod 755або chmod 700все в порядку, chmod 770ні.

Що перевірити, коли щось не так:

  • Запустіть, ssh -vvvщоб побачити багато результатів налагодження. Якщо ви публікуєте запитання, чому ви не можете з'єднатися з ssh, включіть цей вихід (можливо, ви хочете анонімізувати імена хостів та користувачів).
  • Якщо можете, перевірте вхід у сервер /var/log/auth.log.
  • Якщо автентифікація відкритого ключа не працює, перевірте дозволи знову, особливо біт групи (див. Вище).


1
Гарна відповідь! Я забув свого homedir: o
RobAu

Якщо ви використовуєте останню версію ssh (або sshd), клавіші DSA більше не підтримуються за замовчуванням через проблеми із безпекою. Єдине справжнє виправлення - оновлення до RSA або кращих клавіш.
Mikko Rantalainen

Я змінив дозволи своєї домашньої папки і що? Мене заблокували з SSH! Я змінив ключі ssh, ні, сервер все ще відмовляється від з'єднання! Я з розуму намагався знайти рішення і з вашою відповіддю chmod 700 до моєї домашньої папки, ssh почав працювати !!!!!!! Спасибі! Якщо моє термінальне з'єднання впало, намагаючись знайти рішення, я був би повністю заблокований із сервера. Тож остерігайтеся не грати з дозволами на домашню папку! (Я тільки змінив свої права вдома папки, а НЕ .ssh папку , але по- , як і раніше заблокований з SSH)
Тарік

9

Я наткнувся на те саме і, нарешті, зрозумів, що це тому, що я зашифрував свій домашній каталог. SSH не може прочитати файл з дозволеними ключами, поки ви не ввійдете в систему, тому в основному це змушує вас спочатку пройти автентифікацію пароля. Дивіться розділ про зашифрований домашній каталог за наступним посиланням:

https://help.ubuntu.com/community/SSH/OpenSSH/Keys#Encrypted_Home_Directory


5

Якщо ви перевірите дозволи в каталогах, і є "." одразу після них, то, можливо, у вас включений selinux, який порушить обмін ключами та за замовчуванням встановить вручну ідентифікацію пароля.

Ви можете відключити SELinux для усунення несправностей, дотримуючись інструкцій тут: http://www.centos.org/docs/5/html/5.1/Deployment_Guide/sec-sel-enable-disable-enforcement.html або просто відредагуйте / etc / selinux / config файл і змінити його з "примусового" до "відключеного".

Сподіваюся, це допомагає.


У мене був включений selinux, але його відключення, схоже, не виправляло. Що для мене було хитрістю chmod 600 ~/.ssh/authorized_keys- у файлі можна було записати групу. (через pyrosoft.co.uk/blog/2013/01/12/… )
Девід Карбоні

Це мені допомогло! Дякую!
907.

Ви також повинні мати можливість отримати автентифікацію SSH, працюючи з SELinux, встановивши правильний контекст SELinux. Відновлення налаштованих системою контекстів у вашому домашньому каталозі ( restorecon ~ -R) - хороша відправна точка.
Джош Келлі

4

Я б переконався, що у вас правильні налаштування в / etc / ssh / sshd_config.

Щоб змусити використовувати лише PKI та заборонити паролі, знайдіть рядок

#PasswordAuthentication yes 

у вашому файлі, коментуйте його та встановіть на

PasswordAuthenticate no

Я також прочитав би баланс налаштувань, щоб переконатися, що вони мають сенс. Зокрема, спробуйте переконатися, що ви використовуєте ключі RSA, оскільки DSA, як відомо, піддається компрометації.


11
Ви пояснюєте, як відключити автентифікацію пароля. Це не допоможе зробити аутентифікацію відкритого ключа роботою (спершу спробується відкритий ключ). Ендрю: не відключайте автентифікацію пароля, поки ви не переконаєтесь, що автентифікація відкритого ключа працює!
Жил "ТАК - перестань бути злим"

2

Однією з можливих причин проблеми є те, що у вас є ключі DSA, але тепер SSH (мабуть) за замовчуванням вимагає ключів RSA. Я отримав проблему під час оновлення до 16.04. Ви можете побачити більше тут , але короткий відповідь додати наступне ~/.ssh/config:

PubkeyAcceptedKeyTypes ssh-dss


1

Через потребу в усуненні несправностей між двома різними машинами, у мене були два приватні ключі ~/.sshна стороні клієнта.

Замість того, щоб налаштувати кожен хост сервера відповідним приватним ключем, ~/.ssh/identityяк я повинен був зробити, у мене був налаштований вторинний (і в цьому випадку неправильний) ключ для всіх хостів:

Host *
IdentityFile ~/.ssh/identity_b

Виправлення ~/.ssh/identityвирішило проблему:

Host a
IdentityFile ~/.ssh/identity_a
Host b
IdentityFile ~/.ssh/identity_b

0

У мене була та сама проблема, але зміна дозволів chmodне допомогло, оскільки виявилося, що я не маю права власності на ~/.ssh/authorized_keysфайл. Ви можете змінити право власності на .sshкаталог за допомогою:

sudo chown -R "$USER" ~/.ssh

-1

Якось це працювало для мене:

root @ kaiser: ~ # vim / etc / ssh / sshd_config

Змініть цей рядок з "так" на "ні". 28 StrictModes немає

Спробуйте ще раз

sysadmin @ suselinux1: ~> con sysadmin kaiser Ласкаво просимо до Ubuntu 12.04.1 LTS (GNU / Linux 3.2.0-25-generic i686)

Останній вхід: Пт 9 листопада 15:40:11 2012 з 10.10.35 sysadmin @ kaiser: ~ $ date vie 9 листопада 17:53:11 CST 2012 sysadmin @ kaiser: ~ $


3
Робити щось, не знаючи, що це робить і чому це працює, може бути прийнятним, але припускати те, що це погано, і, якщо бути справедливим, гірше, якщо це стосується системи безпеки.
Махеш

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