Как облачная версия Ubuntu обеспечивает «отсутствие root-входа» по ssh?

8

Я смотрю, чтобы настроить Ubuntu облачной версии по умолчанию, где запрещает вход в систему root.

Попытка подключиться к такой машине дает:

maxim@maxim-desktop:~/workspace/integration/deployengine$ ssh root@ec2-204-236-252-95.compute-1.amazonaws.com
The authenticity of host 'ec2-204-236-252-95.compute-1.amazonaws.com (204.236.252.95)' can't be established.
RSA key fingerprint is 3f:96:f4:b3:b9:4b:4f:21:5f:00:38:2a:bb:41:19:1a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'ec2-204-236-252-95.compute-1.amazonaws.com' (RSA) to the list of known hosts.
Please login as the ubuntu user rather than root user.

Connection to ec2-204-236-252-95.compute-1.amazonaws.com closed.

Хотелось бы узнать, в каком конфигурационном файле настроена блокировка рута через ssh и как я могу изменить напечатанное сообщение?

Максим Векслер
источник

Ответы:

14

Старый вопрос, но никто на самом деле не ответил вам, и у меня был такой же вопрос: откуда взялась эта конфигурация?

Это происходит из cloudinit , именно в cc_ssh.pyпределах/usr/lib/python2.7/dist-packages/cloudinit/config

Это в свою очередь напрямую зависит от файла /etc/cloud/cloud.cfg. Вы найдете строку disable_root: true.

Вы должны иметь возможность переопределить его, настроив свои пользовательские данные и добавив строку disable_root: false. Ваш облачный провайдер должен настроить пользовательские данные.

Фрэнк Фишер
источник
9
Что делает cloud-init, так это добавляет строку в /root/.ssh/authorized_keysформу no-port-forwarding,no-agent-forwarding,no-X11-forwarding,command="echo 'Please login as the user \"ubuntu\" rather than the user \"root\".';echo;sleep 10" ssh-rsa xxxxxx. Так что даже если PermitRootLogin yesкоманда ssh не сможет получить рабочую оболочку.
RubenLaguna
5

Предполагая, что ваша конфигурация sshd имеет PermitRootLogin yes.

sudo grep "login as the ubuntu user" /root/.??*

Тем не менее, ссылка, предоставленная Майком Скоттом, является той, которую я настоятельно рекомендую вам внимательно прочитать и учесть.

ROOT SSH

Наконец, если вы хотите обойти стандарт безопасности Ubuntu и вернуться к старой практике разрешения использования ssh и rsync от имени root, эта команда откроет его для нового экземпляра официальных образов Ubuntu:

ssh -i KEYPAIR.pem ubuntu@HOSTNAME 'sudo cp /home/ubuntu/.ssh/authorized_keys /root/.ssh/' Это не рекомендуется, но это может быть способ заставить существующий код автоматизации EC2 продолжать работать до тех пор, пока вы не сможете перейти на методы sudo, описанные выше.

Я оставляю root-входы SSH отключенными, потому что любой общедоступный сервер с включенным SSH будет постоянно подвергаться избиениям днем ​​и ночью при попытках входа в систему из криминальных бот-сетей.

В другом месте документация предупреждает

Включение учетной записи Root требуется редко. Почти все, что вам нужно сделать как администратор системы Ubuntu, можно сделать с помощью sudo или gksudo. Если вам действительно нужен постоянный вход в систему Root, лучше всего смоделировать оболочку входа в Root, используя следующую команду ...

sudo -i

RedGrittyBrick
источник
1
Спасибо. cat /root/.ssh/authorized_keys содержит уведомление об открытии эха вместо оболочки bash. Не могу представить, почему я не смог найти это сам. Спасибо.
Максим Векслер
3

Ответ здесь: http://alestic.com/2009/04/ubuntu-ec2-sudo-ssh-rsync

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

Майк Скотт
источник
0

Проверьте / etc / ssh / sshd_config, опция называется «Разрешить root-вход»

 PermitRootLogin
         Specifies whether root can log in using ssh(1).  The argument
         must be “yes”, “without-password”, “forced-commands-only”, or
         “no”.

Еще один полезный параметр - «без пароля», который позволяет войти в систему как root, но только если вы используете аутентификацию с открытым ключом. man sshd_config для получения дополнительной информации :)

XANi
источник
Аутентификация только по сертификату ssh включена во всех экземплярах Linux EC2, это единственный способ получить удаленный доступ к машине. Очевидно, я могу войти в узел, иначе упомянутое сообщение не будет напечатано. Также обратите внимание: cat / etc / ssh / sshd_config | grep -i root PermitRootLogin да
Максим Векслер