Сервер продолжает запрашивать пароль после того, как я скопировал мой открытый ключ SSH в authorized_keys

У меня есть сервер Ubuntu, работающий в облаке. Я создал пользователя (git). В папке /home/git я создал каталог .ssh/ и файл authorized_keys.

Но когда я помещаю свой открытый ключ SSH в файл authorized_keys, сервер продолжает спрашивать у меня пароль.

Что я сделал не так?

44
задан 26 February 2016 в 17:25

14 ответов

На стороне сервера демон 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.
0
ответ дан 26 February 2016 в 17:25

Также убедитесь, что ваш домашний каталог пользователя (в вашем случае / home / git) доступен только для вас. У меня была эта проблема однажды, потому что мой домашний каталог был доступен для записи в группе. В /var/log/auth.log сказано: «Отказ в аутентификации: неправильное владение или режимы для каталога / home / chuck». (это сделано для того, чтобы убедиться, что он не использует файл author_keys, с которым кто-то кроме вас возился!)

0
ответ дан 26 February 2016 в 17:25

Вы используете ~ / .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
0
ответ дан 26 February 2016 в 17:25

Еще одна вещь, которую нужно проверить, это наличие в вашем открытом ключе дополнительных возвратов каретки. Я следовал совету выше, чтобы просмотреть /var/log/auth.log и увидел ошибку при чтении ключа. Ключ был длиной около двух строк вместо четырех. В ключ были вложены дополнительные возвраты каретки.

При использовании редактора vi используйте shift-j, чтобы соединить строки и стереть лишний пробел в строке ключа.

0
ответ дан 26 February 2016 в 17:25

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

ssh-add path/to/private/key
0
ответ дан 26 February 2016 в 17:25

На машине под управлением Ubuntu 18.04.02 LTS предложение установить разрешения от ~/.ssh до 600 у меня не сработало. Я должен был установить разрешения на 700, а затем все работало нормально.

0
ответ дан 26 February 2016 в 17:25

Существуют различные способы решения этой проблемы: вы можете настроить sshd (на стороне сервера) или ssh (на стороне клиента), чтобы не использовать аутентификацию по паролю. Отключение аутентификации по паролю на сервере делает ваш сервер более безопасным, но у вас будут проблемы, если вы потеряете свой ключ.

Чтобы сделать ssh (на стороне клиента) с использованием аутентификации pubkey, добавьте некоторые опции в команду ssh:

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

Если это работает, вы можете установить опцию PasswordAuthentication=no на постоянной основе в файл конфигурации клиента ssh /etc/ssh/ssh_config для всей системы или ~/.ssh/config для конкретного пользователя (подробнее см. man ssh_config).

0
ответ дан 26 February 2016 в 17:25

Если ваша домашняя папка зашифрована, то ваш authorized_keys файл не читается до входа в систему. Вы должны переместить его за пределы своего дома.

Здесь объясняется и как это сделать: https://help.ubuntu.com/community/SSH/OpenSSH/Keys#Trou устранение неполадок

0
ответ дан 26 February 2016 в 17:25

Вы также можете добавить свой ключ к агенту 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
ответ дан 26 February 2016 в 17:25

Также может быть, что вы звоните

sudo git clone gituser@domain:repo.git

, где ключ ssh пользователя root не был добавлен в authorized_keys из gituser

0
ответ дан 26 February 2016 в 17:25

Я имел свой .ssh/каталог и authorized_keys корректные полномочия файла, но встретился, эта "подсказка для пароля" выходят из-за другой, самовызванной проблемы.

я использовал основанное на мыши выделение и скопировать/вставить скопировать информацию с моего локального id_rsa.pub в authorized_keys файл на сервере. Это успешно скопировало данные в как одна строка, но там где нежелательные пробелы в конце видимых строк, которые было трудно видеть при редактировании файла с vi. После того как я удалил эти нежелательные пробелы, в которых я мог ssh очень хорошо.

0
ответ дан 14 September 2019 в 12:28

Таким образом, то, что произошло для меня, - то, что у меня есть 2 VMs к доступу от моей локальной машины (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
0
ответ дан 22 November 2019 в 23:59

Я мог видеть следующее сообщение журнала из /var/log/auth.log на удаленном сервере: userauth_pubkey: тип ключа ssh-rsa отсутствует в PubkeyAcceptedKeyTypes

Это говорит о том, что ключ типа ssh-rsa в моей локальной системе не принимается сервером. Поэтому изменили конфигурацию сервера, изменив и добавив значение ssh-rsa к атрибуту / свойству PubkeyAcceptedKeyTypes в файле / etc / ssh / sshd_config на моем сервере и перезапустив демон sshd

. Это решило проблему

1
ответ дан 14 February 2020 в 11:40

TL; DR

На стороне клиента:

  • откройте файл конфигурации / etc / ssh / ssh_config ;
  • здесь найдите PreferredAuthentication ;
  • make обязательно пароль идет после публичного ключа , а не наоборот

В моем случае пароль был написан до публичного ключа , поэтому ssh предложит мне ввести пароль, даже если я скопировал свой pub_key на сервер.

Эту проблему легко решить, используя подробное описание:

ssh -v compute @ compute1 ... ... debug1: аутентификация, которая может продолжаться: открытый ключ, пароль debug1: Следующий метод аутентификации: пароль

Как видите, пароль выбирается перед попыткой использования открытого ключа.

Отредактируйте / etc / ssh / ssh_config , переместив пароль после publickey

PreferredAuthentication интерактивная клавиатура, открытый ключ, пароль , на основе хоста, gssapi-with-mi

Теперь я могу войти в систему без запроса pwd.

1
ответ дан 18 April 2020 в 09:21

Другие вопросы по тегам:

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