У меня есть сервер Ubuntu, работающий в облаке. Я создал пользователя ( git
). В папке /home/git
я создал каталог .ssh/
и authorized_keys
файл.
Но когда я помещаю свой открытый ключ SSH в authorized_keys
файл, сервер продолжает спрашивать у меня пароль.
Что я сделал не так?
Ответы:
На стороне сервера демон 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
файл? Есть ли способ включить это?sudo service ssh restart
Также убедитесь, что ваш домашний каталог пользователя (в вашем случае / home / git) доступен только для вас. У меня была эта проблема однажды, потому что мой домашний каталог был доступен для записи в группе. В /var/log/auth.log сказано: «Отказ в аутентификации: неправильное владение или режимы для каталога / home / chuck». (это сделано для того, чтобы убедиться, что он не использует файл author_keys, с которым кто-то кроме вас возился!)
источник
Есть разные способы решения этой проблемы: вы можете настроить
sshd
(на стороне сервера) илиssh
(на стороне клиента) не использовать аутентификацию по паролю. Отключение аутентификации по паролю на сервере делает ваш сервер более безопасным, но у вас будут проблемы, если вы потеряете свой ключ.Чтобы
ssh
(на стороне клиента) использовать аутентификацию pubkey, добавьте вssh
команду несколько параметров :Если это работает, вы можете установить эту
PasswordAuthentication=no
опцию постоянно в конфигурационном файле клиента ssh для/etc/ssh/ssh_config
всей системы или~/.ssh/config
для конкретного пользователя (подробности см.man ssh_config
).источник
/etc/ssh/ssh_config
) в системах Debian / Ubuntu уже предпочитают,PubkeyAuthentication
и попробуйте сначала, как вы увидите при вызовеssh
в подробном режиме.Вы используете ~ / .ssh / config на локальном компьютере? Я столкнулся с этой проблемой, когда использую директиву IdentityFile в файле конфигурации и указываю на открытый ключ. Например:
источник
Если ваша домашняя папка зашифрована, то ваш
authorized_keys
файл не может быть прочитан до входа в систему. Вы должны переместить его за пределы своего дома.Здесь объясняется и как это сделать: https://help.ubuntu.com/community/SSH/OpenSSH/Keys#Trou устранение неполадок
источник
Еще одна вещь, чтобы проверить, есть ли дополнительные ключи возврата каретки в вашем открытом ключе. Я следовал совету выше, чтобы просмотреть /var/log/auth.log и увидел ошибку при чтении ключа. Ключ был длиной около двух строк вместо четырех. В ключ были вложены дополнительные возвраты каретки.
При использовании редактора vi используйте shift-j, чтобы соединить строки и стереть лишний пробел в строке ключа.
источник
sshd_config
. Полчаса ударился головой о стену. Это была моя ошибка! Так или иначе, у меня появилась привычка заканчивать все файлы, которые я редактирую, дополнительным переводом строки. Даже с одним ключом и возвратом каретки в конце достаточно испортить авторизацию.Если у вас есть несколько закрытых ключей, используйте ключ -v в вашей команде ssh-соединения, чтобы проверить, используются ли другие первичные ключи для подключения. Если это не так, скажите клиенту ssh использовать их с помощью следующей команды:
источник
Вы также можете добавить свой ключ в агент SSH:
источник
Также может быть, что вы звоните
sudo git clone gituser@domain:repo.git
где корень пользователей SSH ключ не был добавлен к
authorized_keys
изgituser
источник
На машине под управлением Ubuntu 18.04.02 LTS предложение установить разрешения
~/.ssh
на 600 у меня не сработало. Я должен был установить разрешения на 700, а затем все работало нормально.источник
У меня были правильные права доступа к файлам .ssh / directory и author_keys, но я столкнулся с этой проблемой «запрос пароля» из-за другой, вызванной самим собой проблемы.
Я использовал выделение и копирование / вставку на основе мыши, чтобы скопировать информацию из моего локального id_rsa.pub в файл авторизованные ключи на сервере. Это успешно скопировало данные в виде одной строки, но там, где в конце видимых строк были нежелательные пробелы, которые было трудно увидеть при редактировании файла с помощью vi. После того, как я удалил эти ненужные места, я смог просто зайти в ssh.
источник
Так что для меня случилось то, что у меня есть 2 виртуальные машины для доступа с моей локальной машины (2 ключа id_rsa.pub и id_rsa2.pub). Я понял, что мое соединение ssh по умолчанию использует id_rsa.pub для любого соединения ssh user@xx.xx.xx.xx. Я решил свою проблему, добавив файл конфигурации и указав идентификатор, который будет использоваться для каждого хоста, как показано ниже:
источник