У меня есть Цифровая Океанская капелька, к которой я пытаюсь предоставить мне ssh доступ. Я не уверен, что было сделано к нему ранее. Я попробовал, добавил мой открытый ключ через Цифровой Океан 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
вывод:
Я закончил тем, что переустановил openssh-server
, который устранил проблему. Данными решениями является все великое, но они не работали на меня. Я понятия не имею, что вызывало проблему, но я думаю, что предыдущий разработчик, возможно, смешал с конфигурацией и испортил вещи довольно плохо.
я сомневаюсь, что будет любой с таким конкретным вопросом как мой. Однако, если у Вас есть Цифровая Океанская капелька, Вы не можете получить доступ SSH и ни одну из данной работы решений, переустановить сервер SSH путем выполнения этих команд через консоль Digital Ocean. Остерегаются, это - разрушительный процесс и сотрет старые конфигурационные файлы в /etc/ssh/
(не Ваш .ssh
каталог).
apt-get purge openssh-server
apt-get autoremove
apt-get autoclean
apt-get install openssh-server
Принятие Вашего ssh клиента/ключей в порядке, необходимо смочь к SSH в сервер.
Проверьте ssh конфигурацию демона дважды (должен быть в /etc/ssh/sshd_config
), и проверка на:
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
Также проверяют конфигурационный файл, чтобы видеть, был ли AllowUsers или AllowGroups установлен, поскольку они действуют как белые списки для пользователя и групп соответственно.
кроме того, я заметил, что Вы пытаетесь добавить ключ к пользователю root. Корневым входом в систему по умолчанию должен быть отключен, но можно также изменить это через поле PermitRootLogin.
Согласно журналам, которые вы связали, я думаю, что у вас есть проблемы на стороне клиента, когда вы не можете найти файл закрытого ключа .
Сначала проверьте, существует ли файл ~/.ssh/id_rsa
на вашем локальном компьютере и является ли он правильным _ (если у вас есть больше).
Проверьте .ssh
разрешения для папки (должно быть drwx------
, если не запущено sudo chmod 700 ~/.ssh
) и его содержимое (должно быть -rw-------
, если не запущено sudo chmod 600 ~/.ssh/*
]) . Примените те же разрешения для удаленного компьютера.
Кроме того, вы можете попытаться форсировать, используя желаемый закрытый ключ , передав его непосредственно ssh
с параметром -i
.
Вы можете запустить что-то вроде следующего:
ssh -i /path/to/your/private-key root@X.X.X.X
или
ssh -i ~/.ssh/id_rsa myRemoteUser@X.X.X.X
Вы можете получить больше информации на ssh manpage (запустите man ssh
на своем терминале) .
Также имейте в виду, что если вы хотите войти в систему как root
пользователь, ваша учетная запись root должна быть включена до входа в систему, создав для нее passwd с помощью sudo passwd root
или инструмента администрирования вашего сервера (Ubutntu имеет root учетная запись отключена по умолчанию) . Вы можете получить больше информации на Ubuntu Wiki .
Надеюсь, это поможет.
~/.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
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/digitalocean-rsa
.ssh/digitalocean-rsa.pub
Когда Вы обеспечиваете Ваш ssh
ключ, быть уверенным это .pub
версия!! Когда Вы добавляете к Вашему ~/.ssh/config
, обязательно добавьте корректный закрытый ключ, который соответствует открытому ключу, который Вы добавили к системе.
Большинство установок будет идти с включенной Аутентификацией С открытым ключом. Если Вы начинаете делать вещи все волей-неволей, Вы могли бы столкнуться с несколькими проблемами, как бы то ни было. В том, где OP находится в их проблеме, я рекомендую, чтобы OP удалил /root/.ssh/
каталог для запуска.
Не рекомендуется использовать ssh
получить доступ к пользователю root в удаленной системе. Рекомендуется что Вы ssh
в другого пользователя, и затем возрастают для укоренения с помощью пароля (sudo su -
).
ssh-copy-id
Независимо от того, решаете ли Вы создать другого пользователя и использование ssh
как тот пользователь или пользователь root, следующее является рекомендуемым способом поместить ssh
включает сервер:
ssh-copy-id -i /home/user/.ssh/digitalocean-rsa.pub user@digitaloceanbox
Это позволяет sshd
создать каталог и файлы, необходимые с необходимыми полномочиями. Это означает, что существует нулевой шанс для Вас испортить полномочия или бывший должный помнить детали. Просто используйте инструмент для загрузки ключей.
Однако после того как Вы имеете key'd сами и проверили, что можете соединить использование ключей, рекомендуется отключить Аутентификацию по паролю в sshd
и перезапуск сервис:
/etc/ssh/sshd_config
PasswordAuthentication no
sudo systemctl restart sshd
Если Вы отключаете Аутентификацию по паролю, как можно включить новых пользователей? Один путь состоит в том, чтобы добавить шаблонные файлы к /etc/skel
каталог. После того как у Вас есть key'd один пользователь, сделайте следующее:
sudo cp -r .ssh/ /etc/skel/
ls /etc/skel/.ssh
/etc/skel/.ssh/
так, чтобы они были пробелом, если Вы не хотите автоматически включить себя для каждого недавно созданного пользователя.Когда Вы создаете новых пользователей с sudo useradd -m newuser
, тот пользователь будет иметь .ssh/authorized_keys
, который Вы можете отредактировать и будете иметь верные полномочия.
Можно смотреть sshd
файл журнала для наблюдения, почему связи прерываются или отказаны:
sudo tail -f /var/log/auth.log
При выполнении этой команды используйте другой терминал для попытки входа в систему. Много раз предоставленные сообщения достаточно хороши, чтобы помочь точно определить проблему или найти решение онлайн.
Ssh довольно требователен в отношении владения, файла и полномочий каталога с ssh ключами.
~/.ssh/должны принадлежать владельцу и иметь 700 полномочий. ~/.ssh/authorized_keys должны принадлежать владельцу и иметь 600 полномочий.
Так, для корня:
sudo chown root:root -R /root/.ssh/
sudo chmod 700 /root/.ssh/
sudo chmod 600 /root/.ssh/authorized_keys
Для пользователя меня:
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, позволяют ли корню войти в систему вообще, или только с ssh ключами.
Если Вы имеете:
PasswordAuthentication no
затем можно установить:
PermitRootLogin yes
И затем перезапуск sshd:
/etc/init.d/sshd restart
и попробуйте еще раз.
Обратите внимание, что с 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
Это могло бы сделать отладку легче, и на командной строке это должно всегда работать над локальным компьютером.
Эта проблема открылась для меня использующий изображение Debian на Цифровом Океане. Так или иначе во время резюме настроенный процесс, вероятно, когда я установил пароль 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 обычным способом.