Bagaimana versi cloud Ubuntu memberlakukan "no root login" di atas ssh?

8

Saya mencari untuk men-tweak pengaturan default versi cloud ubuntu di mana ditolak login root.

Mencoba untuk terhubung ke hasil mesin tersebut:

maxim@maxim-desktop:~/workspace/integration/deployengine$ ssh [email protected]
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.

Saya ingin tahu dalam file konfigurasi apa pemblokiran root melalui ssh dikonfigurasi dan bagaimana saya dapat mengubah pesan yang dicetak?

Maxim Veksler
sumber

Jawaban:

14

Pertanyaan lama, tetapi tidak ada yang benar-benar menjawab Anda dan saya memiliki pertanyaan yang sama: Dari mana konfigurasi ini berasal?

Itu berasal dari cloudinit , tepatnya di cc_ssh.pydalam/usr/lib/python2.7/dist-packages/cloudinit/config

Ini pada gilirannya secara langsung tergantung pada file /etc/cloud/cloud.cfg. Anda menemukan garis disable_root: true.

Anda harus bisa menimpanya dengan menyesuaikan data pengguna Anda dan menambahkan baris disable_root: false. Penyedia cloud Anda harus membuat data pengguna dapat dikonfigurasi.

Frank Fischer
sumber
9
Apa yang dilakukan cloud-init adalah menambahkan baris di /root/.ssh/authorized_keysdalam formulir 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. Jadi, bahkan jika PermitRootLogin yesperintah ssh akan gagal untuk mendapatkan shell yang berfungsi.
RubenLaguna
5

Dengan asumsi konfigurasi sshd Anda sudah PermitRootLogin yes.

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

Namun tautan yang disediakan oleh Mike Scott adalah salah satu yang saya sangat sarankan Anda baca dengan seksama dan perhatikan.

ROOT SSH

Akhirnya, jika Anda ingin menghindari standar keamanan Ubuntu dan kembali ke praktik lama yang mengizinkan ssh dan rsync sebagai root, perintah ini akan membukanya untuk contoh baru dari gambar resmi Ubuntu:

ssh -i KEYPAIR.pem ubuntu@HOSTNAME 'sudo cp /home/ubuntu/.ssh/authorized_keys /root/.ssh/' Ini tidak disarankan, tetapi ini mungkin cara untuk mendapatkan kode otomasi EC2 yang ada untuk terus bekerja sampai Anda dapat meningkatkan ke praktik sudo yang dijelaskan di atas.

Saya menjaga login SSH root dinonaktifkan karena setiap server menghadap publik dengan SSH diaktifkan akan dipukul terus menerus siang dan malam oleh upaya login root dari botnet kejahatan.

Di tempat lain, dokumentasi memperingatkan

Mengaktifkan akun Root jarang diperlukan. Hampir semua yang perlu Anda lakukan sebagai administrator sistem Ubuntu dapat dilakukan melalui sudo atau gksudo. Jika Anda benar-benar membutuhkan login Root persisten, alternatif terbaik adalah mensimulasikan shell login Root menggunakan perintah berikut ...

sudo -i

RedGrittyBrick
sumber
1
Terima kasih. cat /root/.ssh/authorized_keys berisi pemberitahuan untuk membuka gema alih-alih bash shell. Tidak dapat membayangkan mengapa saya tidak dapat menemukannya sendiri. Terima kasih.
Maxim Veksler
0

Periksa / etc / ssh / sshd_config, opsi ini disebut "Izin login root"

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

Salah satu pengaturan yang lebih bermanfaat adalah "tanpa kata sandi" yang memungkinkan Anda masuk pada root tetapi hanya jika Anda menggunakan otentikasi kunci publik. man sshd_config untuk info lebih lanjut :)

XANi
sumber
otentikasi ssh hanya sertifikat diaktifkan pada semua instance linux EC2, ini adalah satu-satunya metode akses jarak jauh yang diperoleh ke mesin. Jelas saya bisa login ke node kalau tidak, pesan yang disebutkan tidak akan dicetak. Harap perhatikan juga: cat / etc / ssh / sshd_config | grep -i root PermitRootLogin yes
Maxim Veksler