Сервер продовжує просити пароль після того, як я скопіював свій відкритий ключ SSH до авторизованих_кеїв


44

У мене є сервер Ubuntu, який працює в хмарі. Я створив користувача ( git). У папці /home/gitя створив .ssh/dir та authorized_keysфайл.

Але, коли я поміщаю свій відкритий ключ SSH у authorized_keysфайл, сервер продовжує запитувати мені пароль.

Що я зробив не так?


Де ви розміщуєте ypur public? в git користувача або в root? як ти до нього звертаєшся? як ssh <you> @ <server> o <git> @ <server> або root @ <server> .. перевірте це та додайте більше інформації.
maniat1k

Відповіді:


42

На стороні сервера демон ssh буде реєструвати помилки /var/log/auth.log, тому перевірте цей файл, щоб побачити, про що повідомляється.

З боку клієнта при встановленні з'єднання ви можете додати -vпрапор (або -vvабо -vvv) для збільшення багатослівності. Ви можете виявити свою проблему таким чином.

Ось інші речі, щоб перевірити.

  • Переконайтеся, що /home/git/.ssh/authorized_keysналежить git.
  • Переконайтесь, що в /home/git/.ssh/authorized_keysньому є режим 600 ( -rw-------).

Також перевірте /etc/ssh/sshd_configфайл.

  • PubkeyAuthentication слід встановити yes
  • Існує також AuthorizedKeysFileдиректива, яка визначає шлях, де мають бути розташовані авторизовані ключі. Переконайтесь, що це коментується або за замовчуванням %h/.ssh/authorized_keys.

Дякую! Я спробую ці варіанти та повернусь пізніше до відгуку!
Луїс Далмолін

Що робити, якщо ви не бачите /var/log/auth.logфайл? Чи є спосіб увімкнути це?
Стів Роббінс

1
Журнали можуть бути в / var / log / secure, якщо у вас немає /var/log/auth.log
CoverosGene

Дурний помилку, я мав scp-ed файл .pub, який знаходиться безпосередньо у папці .ssh на сервері, до якого я хотів підключитися. Переконайтеся, що перемістіть його в папку санкціонованих_кілей.
CenterOrbit

Я також повинен був видалити дозволи на групове написання з власного домашнього каталогу. Потім я перезапустив sshsudo service ssh restart
Ділан Пірс

19

Також переконайтесь, що ваш домашній каталог користувача (у вашому випадку / home / git) може бути написаний тільки ви. У мене виникла ця проблема одного разу, тому що мій домашній каталог був доступним для запису групи. /var/log/auth.log сказав в ньому: "Відхилена автентифікація: неправильне володіння або режими для каталогу / home / chuck". (щоб переконатися, що він не використовує файл з дозволеними ключами, з яким хтось, крім вас, возився!)


Хоча це, безумовно, корисно, я думаю, що це більше доповнення до відповіді xeyes .
gertvdijk

1
О боже, спасибі велике! Мої очі горіли, тому що весь пошук я робив на Google. Нарешті це спрацювало !. Дуже дякую.
GTRONICK

Людина дякую! я витратив години на пошуки рішення ... і це вирішило всі мої проблеми.
Afaria

Так. це було все. рада, що я вирішила прочитати наступну відповідь вниз
Катушай

Також перевірте / etc / passwd, що є домашнім каталогом користувача. Моя химерна проблема полягала в тому, що вона не була стандартною
drodsou

5

Існують різні способи вирішення цього питання: ви можете налаштувати sshd(на стороні сервера) або ssh(на стороні клієнта), щоб не використовувати автентифікацію пароля. Вимкнення автентифікації пароля на сервері робить ваш сервер більш захищеним, але у вас виникнуть проблеми, якщо ви втратите ключ.

Щоб зробити ssh(на стороні клієнта) використання автентифікації pubkey, додайте до sshкоманди кілька параметрів :

ssh -o PubkeyAuthentication=yes -o PasswordAuthentication=no -X git@server

Якщо це працює, ви можете встановити цю PasswordAuthentication=noопцію на постійній основі у файлі ssh client config /etc/ssh/ssh_configдля всієї системи або для ~/.ssh/configкористувача (про деталі див. man ssh_config).


1
За замовчуванням всі конфігурації клієнтів SSH ( /etc/ssh/ssh_config) в системах Debian / Ubuntu вже віддають перевагу PubkeyAuthentication і спершу спробуйте це, як ви побачите при виклику sshу багатослівному режимі.
gertvdijk

3

Чи використовуєте ~ / .ssh / config на локальній машині? Я зіткнувся з цією проблемою, коли використовую директиву IdentityFile у конфігураційному файлі та вказую на відкритий ключ. Наприклад:

Host Cloud
    Hostname cloud.theclouds.com
    User git
    IdentityFile ~/.ssh/config/mykey # This is correct

    # IdentityFile ~/.ssh/config/mykey.pub # This is incorrect


1

Інша річ, на яку слід перевірити, чи є додаткові зворотні перевезення у вашому відкритому ключі. Я дотримувався вищевказаних порад, щоб переглянути /var/log/auth.log і побачив помилку під час читання ключа. Ключ мав приблизно два рядки, а не чотири. У ключ були вбудовані додаткові зворотні перевезення.

Використовуючи редактор vi, використовуйте shift-j для приєднання рядків та видалення зайвого простору в рядку ключів.


1
Я потрійно перевірив дозволи та sshd_config. Половину години вдарив голову об стіну. Це була моя помилка! Якимось чином звик закінчувати всі файли, які я редагую вручну, додатковим рядком рядків. Навіть з одним ключем і поверненням каретки в кінці достатньо зіпсувати авторизацію.
jrhorn424

Переконайтеся, що у вас також є ----- ЗАКОННИЙ КЛЮЧ РСА ----- біт.
тобіч

1

Якщо у вас є кілька приватних ключів, використовуйте перемикач -v на команді ssh-з'єднання, щоб перевірити, чи використовуються ваші інші первинні ключі, щоб спробувати підключитися. Якщо їх немає, скажіть ssh-клієнту використовувати їх із наступною командою:

ssh-add path/to/private/key

1

Ви також можете додати свій ключ до агента SSH:

u@pc:~$ ssh-agent bash
u@pc:~$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/u/.ssh/id_rsa: # ENTER YOUR PASSWORD
Identity added: /home/u/.ssh/id_rsa (/home/u/.ssh/id_rsa)

0

Також може бути те, що ви телефонуєте

sudo git clone gituser@domain:repo.git

де корінь користувачів SSH ключ не був доданий до authorized_keysзgituser


0

На машині під управлінням Ubuntu 18.04.02 LTS пропозиція встановити дозволи ~/.sshдо 600 не працювала для мене. Мені довелося встановити дозволи на 700, і тоді все спрацювало нормально.


0

Я мав правильні дозволи дозволу на файл .ssh / directory та санкціонованих файлів, але зіткнувся з проблемою "запит на введення пароля" через іншу, самостійно викликану проблему.

Я використовував виділення на основі миші та копіювати / вставляти, щоб скопіювати інформацію з мого локального id_rsa.pub у файл дозволеного_кейсу на сервері. Це вдало скопіювало дані як єдиний рядок, але там, де в кінці видимих ​​рядків небажані пробіли, які було важко помітити під час редагування файлу з vi. Після того, як я видалив ці небажані пробіли, я міг би просто схуднути.


0

Тож у мене сталося те, що у мене є 2 VM для доступу з моєї локальної машини (2 клавіші id_rsa.pub та id_rsa2.pub). Я зрозумів, що моє ssh-з'єднання використовує id_rsa.pub за замовчуванням для будь-якого з'єднання ssh user@xx.xx.xx.xx. Я вирішив свою проблему, додавши файл конфігурації та вказавши ідентифікацію, яка буде використовуватись для кожного хоста, наприклад:

vi ~/.ssh/config

Add both hostnames and their identity file as follows:

Host server1.nixcraft.com
  IdentityFile ~/Users/.ssh/id_rsa1
Host server2.nixcraft.com
  IdentityFile /backup/home/aymen/.ssh/id_rsa2
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.