У меня есть капелька 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
Настройка записей хоста для 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-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 в качестве этого пользователя или коренного пользователя, рекомендуемым способом размещения 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Пока вы используете эту команду, используйте другой терминал для попытки входа в систему. Многократно предоставленные сообщения достаточно хороши, чтобы помочь выявить проблему или найти решение в Интернете.
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
Это может облегчить отладку, и в командной строке это всегда должно работать на локальном компьютере.
Двойная проверка конфигурации демона ssh (должна быть в /etc/ssh/sshd_config) и проверить:
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
Также проверьте файл конфигурации, чтобы определить, установлены ли AllowUsers или AllowGroups, поскольку они действуют как белые списки для пользователей и групп соответственно.
Кроме того, я заметил, что вы пытаетесь добавить ключ к пользователю root. По умолчанию вход в root должен быть отключен, но вы также можете изменить его с помощью поля AllowUsers .
В соответствии с журналами, которые вы связали, я думаю, что у вас есть проблемы на стороне клиента, не находя файл закрытого ключа.
Сначала проверьте файл ~/.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.
Надеюсь, что это поможет.
Эта проблема возникла для меня, используя образ 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
Просто была очень похожая проблема. Это сработало для меня - добавьте эту строку в / etc / ssh / sshd_config
AuthorizedKeysFile %h/.ssh/authorized_keys
Затем перезапустите ssh обычным способом.