Не удается ssh даже с открытым ключом, добавленным в authorized_keys

У меня есть капелька Digital Ocean, я пытаюсь дать себе доступ к SSH. Я не уверен, что было сделано ранее. Я попытался добавить свой открытый ключ через интерфейс Digital Ocean UI. Это не сработало, я продолжал получать permission denied (publickey).

Я обратился к серверу с помощью цифровой океанской консоли и вручную добавил свой открытый ключ к /root/.ssh/authorized_keys. Затем я попытался использовать ssh с помощью ssh root@x.x.x.x.

Итак, я попробовал добавить нового пользователя, создал каталог /home/me/.ssh с разрешениями 700 в самом каталоге .ssh и 600 на authorized_keys. Затем я попробовал ssh me@x.x.x.x. Это не сработало.

Перезапуск ssh-демона тоже ничего не меняет.

Что мне не хватает?

Изменить:

Вот подробный вывод ssh.

https://gist.github.com/jaesung2061/a37cfd68308414cede8abf7f0137daa9

Редактировать 2:

LogLevel DEBUG3 вывод :

https://gist.github.com/jaesung2061/a37cfd68308414cede8abf7f0137daa9

1
задан 26 January 2017 в 00:19

6 ответов

Конфигурация клиента

Настройка ~/.ssh/config

Настройка записей хоста для ssh очень проста и сэкономит вам массу проблем. Вот пример:

Host digitaloceanbox
Hostname 111.111.111.111
User root
PubKeyAuthentication yes
IdentityFile /home/user/.ssh/digitalocean-rsa
ForwardX11 yes


Host github github.com
Hostname github.com
User git
PubKeyAuthentication yes
IdentityFile /home/user/.ssh/github-rsa
ForwardX11 no

В этом примере мы настраиваем digitaloceanbox и github и github.com, чтобы мы могли выполнять следующие команды:

ssh github ssh digitaloceanbox

Если мы хотим войти в систему как другой пользователь, чем тот, который указан в конфигурационном файле, мы просто положим user@ в начале:

ssh user@digitaloceanbox [ ! d8]

Создание клавиш ssh

ssh-keygen -t rsa -b 4096 -C user@homemachine
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):  /home/user/.ssh/digitalocean-rsa
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/user/.ssh/digitalocean-rsa
Your public key has been saved in /home/user/.ssh/digitalocean-rsa.pub.
The key fingerprint is:
SHA256:p9PYE/tveF2n//bLbp3ogYDtMtYEC5ziQiPxeob6fbo user@homemachine

Обратите внимание, что я указал полный путь к закрытому ключу, который я хочу создать, когда будет предложено ssh-keygen. Я также определил комментарий (-C), который позволяет мне легко идентифицировать ключи на удаленных машинах.

Это создаст два файла:

ssh github [ ! d5] .ssh/digitalocean-rsa.pub Открытый ключ. Это то, что вы храните на сервере для аутентификации.

Когда вы предоставляете свой ssh ключ, убедитесь, что это .pub версия! Когда вы добавите к своему ~/.ssh/config, обязательно добавьте правильный закрытый ключ, который соответствует открытому ключу, добавленному в систему.

Конфигурация сервера

] Большинство установок будут включены с включенной аутентификацией открытого ключа. Однако, если вы начнете все делать невольно, вы можете столкнуться с несколькими проблемами. В случае, когда OP находится в их проблеме, я рекомендую, чтобы OP удалил каталог /root/.ssh/ для начала.

Не рекомендуется использовать ssh для доступа к пользователю root в удаленной системе , Рекомендуется ssh использовать другого пользователя, а затем переходить на root с помощью пароля (sudo su -).

Добавить ключи к хосту с помощью ssh-copy-id

Независимо от того, независимо от того, решите ли вы создать другого пользователя и используете ли ssh в качестве этого пользователя или коренного пользователя, рекомендуемым способом размещения ssh ключей на сервере:

.ssh/digitalocean-rsa.pub Открытый ключ. Это то, что вы храните на сервере для аутентификации.

Это позволяет sshd создавать каталог и файлы, необходимые с необходимыми разрешениями. Это означает, что у вас нет шансов перепутать разрешения или вам нужно запомнить детали. Просто используйте инструмент для загрузки ключей.

Отключить аутентификацию паролей

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

Изменить /etc/ssh/sshd_config ssh digitaloceanbox sudo systemctl restart sshd

Как насчет новых пользователей?

Если вы отключите аутентификацию по паролю, как вы можете использовать новых пользователей? Один из способов - добавить файлы шаблонов в каталог /etc/skel. После того, как вы нажали один из них, выполните следующие действия:

Изменить /etc/ssh/sshd_config ls /etc/skel/.ssh sudo systemctl restart sshd

Когда вы создаете новых пользователей с помощью sudo useradd -m newuser, у этого пользователя будет .ssh/authorized_keys, который вы можете редактировать и иметь соответствующие разрешения.

Отладка

Вы можете смотреть файл журнала sshd, чтобы узнать, почему соединения терпят неудачу или получают отказ:

ls /etc/skel/.ssh

Пока вы используете эту команду, используйте другой терминал для попытки входа в систему. Многократно предоставленные сообщения достаточно хороши, чтобы помочь выявить проблему или найти решение в Интернете.

13
ответ дан 23 May 2018 в 02:27
  • 1
    Шаг отладки работал для меня. Корневой каталог имел неправильные разрешения (необходимо было 700) – naisanza 22 September 2017 в 10:15

Ssh довольно разборчив в отношении прав собственности, файлов и каталогов с ключами ssh.

~ / .ssh / должен принадлежать владельцу и иметь 700 разрешений. ~ / .ssh / authorized_keys должны принадлежать владельцу и иметь 600 разрешений.

Итак, для root:

sudo chown root:root -R /root/.ssh/
sudo chmod 700 /root/.ssh/
sudo chmod 600 /root/.ssh/authorized_keys

Для пользователя me:

sudo chown me:me -R /home/me/
sudo chmod 700 /home/me/.ssh/
sudo chmod 600 /home/me/.ssh/authorized_keys

И затем повторите попытку.

Конечно, вы также должны проверить / etc / ssh / sshd_config, разрешено ли root разрешать вход в систему, или просто с ключами ssh.

] Если у вас есть:

PasswordAuthentication no

, вы можете установить:

PermitRootLogin yes

И затем перезапустить sshd:

/etc/init.d/sshd restart

и повторить попытку. [ ! d9]

Обратите внимание, что с помощью ssh демон sshd можно перезапустить даже при использовании сеанса ssh для этого. Openssh предназначен для решения этого вопроса.

Глядя на ваши загруженные фрагменты файла журнала, он кажется, что вы используете MacOSX? Не могли бы вы создать новый ключ ssh?

Кроме того, я узнал в прошлом, что, когда у меня есть более одного частного ключа ssh на моем локальном компьютере для моего пользователя, это иногда делает невозможным удаленную запись с помощью ssh. Это помогло очень многое сделать записи на локальном компьютере в файле ~ / .ssh / config, чтобы решить эту проблему. Например:

Host my-vps
  HostName my-vps-ip-address-here
  IdentityFile ~/.ssh/id_rsa-my-private-key-location
  User my-username-here

После этого попробуйте выполнить командную строку на вашем локальном компьютере:

ssh -v my-vps

При использовании клавиш ssh, а также никаких ssh-клавиш для некоторых других логинов , вы можете, помимо записей с ключами ssh, также определить вход ssh без использования ssh-ключа в файле ~ / ssh / config, например:

Host pi
  Hostname 192.168.1.111
  Port 22
  User pi
  PasswordAuthentication yes
  PreferredAuthentications password

Это отлично работает для меня. Также возможно определить, какой ключ использовать в командной строке:

ssh -v root@10.111.111.254 -i .ssh/id_rsa

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

7
ответ дан 23 May 2018 в 02:27

Двойная проверка конфигурации демона ssh (должна быть в /etc/ssh/sshd_config) и проверить:

PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys

Также проверьте файл конфигурации, чтобы определить, установлены ли AllowUsers или AllowGroups, поскольку они действуют как белые списки для пользователей и групп соответственно.

Кроме того, я заметил, что вы пытаетесь добавить ключ к пользователю root. По умолчанию вход в root должен быть отключен, но вы также можете изменить его с помощью поля AllowUsers .

3
ответ дан 23 May 2018 в 02:27
  • 1
    Ни один из них не работает: / Я все еще получаю Permission denied (publickey) – Jeff 15 January 2017 в 11:09

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

Сначала проверьте файл ~/.ssh/id_rsa на вашей локальной машине и исправить один _ (если у вас больше). Проверьте разрешения папки .ssh (должно быть drwx------, если не запустить sudo chmod 700 ~/.ssh) и его содержимое (должно быть -rw-------, если не запустить sudo chmod 600 ~/.ssh/*). Примените те же разрешения для удаленной машины.

Кроме того, вы можете попытаться принудительно использовать свой личный ключ , указав его непосредственно на ssh с параметром -i.

[d3 ] Сначала проверьте файл ~/.ssh/id_rsa на вашем локальном компьютере, и он правильный: (если у вас есть больше).

Вы можете получить дополнительную информацию о man-странице ssh (запустите man ssh на вашем терминале.

Также имейте в виду, если вы хотите войти в систему как пользователь root, ваша учетная запись root должна быть активирована до входа в систему, создав для нее пароль с помощью sudo passwd root или вашего средство администрирования сервера (запустите man ssh на вашем терминале) . Вы можете получить дополнительную информацию в Ubuntu Wiki.

Надеюсь, что это поможет.

3
ответ дан 23 May 2018 в 02:27

Эта проблема возникла для меня, используя образ Debian на Digital Ocean. Как-то во время краткого процесса настройки, возможно, когда я установил пароль root, владелец для /root был изменен на пользователя debian. В /var/log/auth.log я увидел следующее:

Jul 26 20:58:17 docker sshd[12576]: Authentication refused: bad ownership or modes for directory /root

Простое выполнение chown root:root -R /root решило проблему.

HTH

1
ответ дан 23 May 2018 в 02:27

Просто была очень похожая проблема. Это сработало для меня - добавьте эту строку в / etc / ssh / sshd_config

AuthorizedKeysFile %h/.ssh/authorized_keys 

Затем перезапустите ssh обычным способом.

0
ответ дан 23 May 2018 в 02:27

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

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