ssh запитує пароль, незважаючи на ssh-copy-id


28

Я деякий час використовую аутентифікацію відкритих ключів на віддаленому сервері для віддаленого використання оболонки, а також для монтажу sshfs. Після того, як змусив умититися з мого каталогу sshfs, я помітив, що ssh почав запросити мене про пароль. Я спробував очистити віддалений .ssh / autori_keys з будь-якої згадки про локальну машину, і я очистив локальну машину від посилань на віддалену машину. Потім я повторив свій ssh-copy-id, він запропонував мені пароль і повернувся нормально. Але ось і ось, коли я переходжу на віддалений сервер, мені все-таки запропонують пароль. Я трохи розгублений, що може бути проблемою, якісь пропозиції?


1
serverfault.com/questions/208181 / ... Я не впевнений , що StackExchange політика дублів через сайти, але це не здається мені , що крос-постинг питання було б корисно.
ефемієнт

Якщо ви перевірили, що тільки ви можете писати ~, ~/.sshта ~/.ssh/authorized_keysзапускати ssh -vvv server.example.comта повідомляти про вихід (анонімізувати імена хоста та користувачів, якщо хочете). Якщо у вас є кореневий доступ на сервері, перегляньте записи журналу, створені під час спроби входу у відкритий ключ.
Жил 'ТАК - перестань бути злим'

Відповіді:


32

sshd стає дивним щодо дозволів на $ HOME, $ HOME / .ssh (обидва каталоги) та на $ HOME / .ssh / санкціоновані_кеї.

Один з моїх скриньок linux отримав дозволи drwxrwxrwx у моєму каталозі $ HOME. Поле Arch linux абсолютно не входитиме в систему, використовуючи відкриті ключі, поки я не видалю дозвол для групи, інший у моєму каталозі $ HOME.

Спробуйте зробити $ HOME і $ HOME / .ssh / більш обмежувальні дозволи для груп та інших. Подивіться, якщо це не дозволяє sshd робити свої речі.


4
Так. ssh-copy-idВи повинні подбати про дозволи ~/.sshта ~/.ssh/authorized_keys, а також переконайтесь, що ваш домашній каталог не піддається груповому запису.
Жил "ТАК - перестань бути злим"

7
Це було для мене. Я використовував ssh-copy-id для надсилання ключа RSA, і мені все ще було запропоновано. Запуск chmod g-w homedirна віддаленому сервері працював як шарм.
Бен Крігер

9

Необхідні наступні дозволи:

  • .sshпапка:700 (drwx------)
  • Відкритий ключ: 644 (-rw-r--r--)
  • Приватний ключ: 600 (-rw-------)

5

Нещодавно я також відчував це питання.

Це було виправлено шляхом зміни дозволів $HOMEкаталогу. Однак просто запуск chmod g-w ~/не виправив проблему. Крім того , щоб chmod g-w ~/я також необхідно змінити права othersна $HOMEкаталог, виконавшиchmod o-wx ~/

Разом:

chmod g-w ~/
chmod o-wx ~/

Зауважте, що я не впевнений, що це o-xбуло необхідно, я просто застосував це як запобіжний засіб.



0

Чи виникає проблема також при паралельних входах, тобто якщо ви намагаєтесь монтувати sshfs під час відкритого сеансу ssh? Якщо ні, то я б здогадався, що ваш домашній каталог зашифрований? У цьому випадку ви можете $HOME/.ssh/authorized_keysвикористовуватись на віддаленій машині лише після першого входу (використовуючи свій пароль).

Ознайомтесь з https://help.ubuntu.com/community/SSH/OpenSSH/Keys#Troubleshooting за допомогою пояснення та необхідного вирішення.


0

Я б опублікував це як коментар, але, мабуть, це буде занадто довго. Я просто хотів додати, що ssh-copy-idнамагається надіслати відкритий ключ з /.sshмісця у вашій $HOMEпапці.

Якщо ви намагаєтеся sshвикорінити відкритий ключ (збережіть коментарі, пов'язані з безпекою), ви ssh-copy-idможете намагатися увійти за допомогою неправильного відкритого ключа, якщо ваша $HOMEзмінна встановлена ​​на що-небудь інше /root(наприклад, на домашній каталог вашого звичайного користувача ), таким чином, користувачу root буде запропоновано, оскільки відкритий ключ root не встановлений у віддаленій системі.

Щоб вказати точний відкритий ключ, ви можете скористатися наступним одноклассником:

pub="$(cat /root/.ssh/id_rsa.pub)"; ssh user@remotehost "echo $pub >> .ssh/authorized_keys; chmod 700 .ssh; chmod 600 .ssh/authorized_keys"

Я стикався з цим сценарієм в дикій природі кілька разів (включаючи цей ранок) і подумав, що спробую вкласти свої 2 копійки, на всякий випадок, якщо хтось опинився в тій же ситуації.


0

Як і інші згадані учасники, це, мабуть, питання про дозвіл.

Найкращий спосіб діагностувати це перезапуск демона SSH на віддаленому сервері з включеною опцією налагодження - зазвичай опцією "-d". Повідомлення демона OpenSSH дуже явне. Наприклад, ви побачите повідомлення, такі як:

Authentication refused: bad ownership or modes for directory /some/path

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

0

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


0

Інша можлива проблема полягає в тому, що сервер не підтримує ваш ключовий алгоритм. У своєму випадку я знайшов у своїх sshdжурналах ( /var/log/auth.logу моєму випадку) такі повідомлення :

userauth_pubkey: unsupported public key algorithm: ssh-ed25519 [preauth]

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


0

Оскільки ці запитання з'являються серед перших результатів пошуку під час googling для такої поведінки, я також додам своє рішення:

У моєму випадку це нічого не стосувалося дозволів. З будь-якої причини (не заважав собі з'ясувати, з якої причини насправді, як я знайшов швидке виправлення) при виконанні команди ssh програма не шукала потрібного файла ідентифікації. Одним з рішень було додати вручну на віддалений сервер ключ SSH, який намагалася використовувати програма SSH. Ви можете спостерігати, що робить програма SSH при виконанні команди, додавши до команди -v:

ssh -v username@your-host-ip-or-domain 

Тоді ви просто захопите на локальній машині будь-який відкритий ключ, для якого програма SSH намагається знайти файл посвідчення / приватний ключ для, наприклад, на Mac:

cat ~/.ssh/id_rsa.pub

... і додайте його у файл дозволеного_кейса дистанційного керування у:

~/.ssh/authorized_keys

Іншим, у моєму випадку кращим рішенням було додати користувальницький хост у мій локальний файл конфігурації ssh. На моєму Mac це:

/Users/my-user-name/.ssh/config

Тут ви можете додати, наприклад, щось подібне:

Host mynewserver
        HostName some.IP.number.or.domain
        Port 20000 #if custom port is used and not the default 22
        User the_root
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/id_rsa_for_my_new_server

Тоді вам просто потрібно виконати:

ssh mynewserver

... і Вуаля

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