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

43

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

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

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

    
задан Luis Dalmolin 07.03.2012 в 13:34
источник

9 ответов

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 .
ответ дан xeyes 07.03.2012 в 13:56
17

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

    
ответ дан centipedefarmer 14.06.2013 в 15:32
4

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

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

ssh -o PubkeyAuthentication=yes -o PasswordAuthentication=no -X [email protected]

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

    
ответ дан tohuwawohu 07.03.2012 в 13:48
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
    
ответ дан user1576 20.11.2013 в 23:09
2

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

Здесь объясняется и как это сделать: Ссылка

    
ответ дан Fab V. 12.03.2014 в 07:59
1

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

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

    
ответ дан Victor 23.05.2013 в 02:02
1

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

ssh-add path/to/private/key
    
ответ дан Max 17.04.2014 в 10:28
1

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

[email protected]:~$ ssh-agent bash
[email protected]:~$ 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)
    
ответ дан TTT 09.09.2014 в 14:15
0

Возможно также, что вы вызываете

sudo git clone [email protected]:repo.git

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

    
ответ дан Stevie G 18.08.2015 в 20:57