Чому автоматичний вхід через ssh з авторизованими_кейсами не працює?


12

Я створив приватний / публічний dsa-ключ. Я відкрив відкритий ключ на сервері

~/.ssh/authorized_keys

Все налаштовано, як і на моєму іншому сервері, але, схоже, сервер просто ігнорує мої зусилля.


Перевірте /etc/ssh/ssh_configі /etc/ssh/sshd_configне перевірити , що ви нічого не хочете відключений.
Крістофер Джонсон

Ви також хочете перевірити sshd_config.
Вагнерр

Дякую. Я оновив відповідь (яка спочатку згадувала лише ssh_config).
Крістофер Джонсон

Усі вищезазначені дискусії ідеально підходять, якщо ви використовуєте відкритий стиль ssh. Якщо система використовує ssh2, то у неї є зовсім незвичний спосіб управління ключами. У цій статті йдеться про те, як і що. burnz.wordpress.com/2007/12/14/…
chris

1
Зазвичай перевірка /var/log/auth.logв системах Debian або /var/log/secureRedHat повинна дати вам чітку пораду щодо того, що неправильно підтверджено (зазвичай проблеми з дозволом)
Джованні Торальдо,

Відповіді:


15

Хоча вашу проблему, можливо, вже вирішили інші відповіді, я заблокував себе з достатньою кількістю машин, щоб не перевірити зміни sshd_config перед тим, як підписатись, тому придумав нижченаведений процес, який може бути корисним для подальшої налагодження змін конфігурації sshd:

НЕ відключайте активне ssh-з'єднання, поки ПІСЛЯ тестування не буде перевірено поведінку, як ви очікували.

а. перевірте, що, на вашу думку, повинен робити sshd

б. переконайтеся, що конфігурація дійсна за допомогою "-t"

c. запустити багатослівну "тестову" версію сервера, на якому можна жити монітором

г. запустити багатослівний "тестовий" підключення клієнта ви можете жити монітором


а. перевірте, що, на вашу думку, повинен робити sshd

Перегляньте файл конфігурації sshd без будь-якого коментаря, як-небудь нижче (припустимо, що sshd_config - це правильний файл та в / etc / ssh)

$ grep -v "^ #" / etc / ssh / sshd_config | grep -v "^ $"

Це просто очищає речі, тому ми перевіряємо, що, на нашу думку, змінюємо (не обов’язково, правильно чи ні).

б. переконайтеся, що конфігурація дійсна за допомогою "-t"

Зі man сторінки сторінки sshd, яку я використовую,

-t Тестовий режим. Перевірте лише достовірність файлу конфігурації та обґрунтованість клавіш. Це корисно для надійного оновлення sshd, оскільки можуть змінюватися параметри конфігурації.

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

c. запустити багатослівну "тестову" версію сервера, на якому можна жити монітором

$ sudo / usr / sbin / sshd -ddd -p 9999

Це підтримує ваш існуючий робочий сеанс активним, але дає ще один екземпляр sshd для перевірки нових змін конфігурації. SSHD тепер працює на передньому плані до визначеного користувачем порту (9999 у нашому прикладі) і висуває багато галасливої ​​інформації про налагодження, яку ви можете відстежувати в / var / log / authlog (або, можливо, /var/log/auth.log залежно на вашій ОС.)

г. запустити багатослівний "тестовий" підключення клієнта ви можете жити монітором

Запустіть підключення клієнта ssh у багатослівному режимі, щоб відобразити на екрані більше інформації, яка може призвести до кращої налагодження вашої помилки.

$ ssh -vvv -p 9999 ім'я сервера

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

Рішення, як правило, зводиться до прав доступу до файлів (як показано Magnar та setatakahashi)

Удачі


Я думаю, ви також повинні перевірити файл ssh_config на клієнтському кінці, щоб переконатися, що він робить те, що ви очікуєте. Використовуйте щось на кшталт наведеного нижче, щоб вилучити коментарі:> grep -v "^ #" / etc / ssh / ssh_config | grep -v "^ $"
samt

Ну, конфігурацію ssh клієнта можна виправити будь-коли, це сервер, від якого ви заблокуєтесь, якщо ви його неправильно налаштували.
Soviero

33

Сервер буде ігнорувати ваш файл санкціонованих ключів, якщо властивості власника неправильні. Змінивши це, виправляє це:

chmod 0700 ~/.ssh
chmod 0600 ~/.ssh/authorized_keys

6
ssh -vvv -l ім'я користувача server.domain повідомить вам, чи надсилаєте ви дійсний ключ
Дейв Чейні

Іноді я бачив, як sshd скаржиться на погані дозволи в домашній директорії - тому я додав би "chmod o-rwx ~" (або принаймні "chmod ow ~") до списку, як це робили setatakahashi. Зазвичай це стає очевидним під час моніторингу журналу файлів - повідомлення про помилки, які я бачив там, завжди вказували у правильному напрямку.
Олаф

Ця відповідь здається найбільш ймовірною, але коментар Дейва Чейні - єдиний спосіб побачити, що відбувається насправді. Також перевірте журнали серверів.
dwc

Це була моя проблема. Я бив головою по цьому годинами. Дуже дякую!
Сем Соффс

1
Це зробило трюк, але мої попередні дозволи були 0775і 0644відповідно. Чому зменшення дозволів допомогло? Це запобіжна безпека, яка десь налаштована?
Декан

11

$ chmod 700 ~

$ chmod 700 ~ / .ssh

$ chmod 600 ~ / .ssh / дозволені_кейди

Перевірте ці атрибути в / etc / ssh / sshd_config

$ sudo grep PubkeyAuthentication / тощо / ssh / sshd_config

$ sudo grep Protocol / etc / ssh / sshd_config


2
Чудовий пункт про ~, ви повинні переконатися, що ніхто, крім вас, не може записатись у ваш домашній каталог, інакше вони могли б перейменувати ваш каталог ~ / .ssh
Дейв Чейні,

останнім chmod має бути: $ chmod 600 ~/.ssh/authorized_keysні$ chmod 600 ~/.sHh/authorized_keys
SooDesuNe

3
якими мають бути значення атрибутів ?
Майкл

0

Ще один важливий камінь ..

Якщо ваш домашній каталог зашифрований, sshd не матиме доступу до ~ / .ssh / санкціонованих_кеїв ..

Дивіться цю відповідь

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