GCP - sudo bekerja di GoogleCloudShell tetapi tidak ketika saya ssh ke vm


0

Saya membuat VM Compute Engine VM (Debian 9) yang baru dan membuka sebuah shell dengan menggunakan shell GoogleCloud. Saya dapat sudodari jendela shell browser.

Saya kemudian mengatur kunci ssh dan ssh ke vm. Demi diskusi, nama pengguna saya adalah "user123". Saya ssh ke GCP vm saya menggunakan:

ssh user123@1.2.3.4

Di mana 1.2.3.4 adalah alamat IP eksternal GCP saya. Saya kemudian login.

Jadi sebagai pengguna user123di GoogleCloudShell sudo berfungsi, tetapi ketika masuk melalui ssh sebagai user123, saya diminta untuk memasukkan kata sandi.

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for user123:

Secara alami, saya tidak ingin atau perlu mengatur kata sandi, saya perlu mendapatkan sudo untuk memungkinkan user123akun pengguna ini untuk sudo. Tapi itu berfungsi ketika masuk ke GoogleCloudShell .... Hum ... Saya akan melacaknya tapi itu pertanyaan saya.

CATATAN: Karena saya memiliki root di GoogleCloudShell saya (via sudo), saya harus dapat menemukan apa yang perlu saya lakukan dan memperbaikinya.

Apa langkah selanjutnya yang harus saya ambil untuk memungkinkan sudo bekerja ketika masuk melalui ssh?


Saya tidak yakin apa yang terjadi, tetapi saya mengatur VM lain dan semuanya bekerja dengan baik. Saya bisa sudosetelah saya ssh ke vm menggunakan ssh user123 @ gcp-host dan juga dari GoogleCloudShell. Saya mungkin menghapus pertanyaan ini jika tidak ada yang merasa berguna.
PatS

Hum ... Plotnya mengental. Sesuatu mengguncang file ~ / .ssh / official_keys saya dan ketika saya membuatnya kembali. Saya tidak bisa sudo ketika saya ssh ke dalam GCP vm. Saya pasti melakukan sesuatu dengan cara yang salah (cara yang tidak disukai GCP).
PatS

Saya menutup GoogleCloudShell saya dan membukanya kembali. Ketika saya melakukannya, lingkungan GCP menambahkan dua kunci ssh GCP (untuk mendukung GoogleCloudShell, saya menduga). Ketika kunci-kunci itu ada, saya bisa sudoketika login dari ssh .
PatS

Jawaban:


2

Saya akan memberikan 2 jawaban.

Pertama, cloud shell mengelola metadata instance untuk Anda di belakang layar, dan memungkinkan sudo tanpa kata sandi untuk semua pengguna yang ditambahkan ke proyek dengan cara ini. Gunakan google untuk mengatur pengguna Anda

https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keys https://cloud.google.com/compute/docs/instan/managing-instance-access

Tambahkan akun pengguna yang Anda inginkan melalui konsol proyek. Ini akan menyebarkan pengguna itu ke semua host di proyek Anda.

Kedua, yang Anda inginkan adalah mengatur sudo tanpa kata sandi. Anda dapat (menggunakan visudo) mengedit / etc / sudoers atau membuat file baru di bawah /etc/sudoers.d dan menambahkan baris seperti ini:

user123       ALL = (ALL) NOPASSWD: ALL

Anda dapat melihat bahwa google melakukannya dengan keanggotaan grup di grup google-sudoers

timmy@instance-1:~$ sudo cat /etc/sudoers.d/google_sudoers 
%google-sudoers ALL=(ALL:ALL) NOPASSWD:ALL
timmy@instance-1:~$ id
uid=1000(timmy) gid=1001(timmy) groups=1001(timmy),4(adm),30(dip),44(video),46(plugdev),1000(google-sudoers)

0

Setelah membuat mesin komputasi GCP Anda tidak perlu melakukan sesuatu yang istimewa untuk membuat sudo bekerja dari ssh. Anda jelas perlu menggunakan konsol GCP dan menambahkan kunci Anda sebagai @TimmyBrowne menyebutkan dalam posnya. Lihat https://cloud.google.com/compute/docs/inances/adding-removing-ssh-keys .

Setelah kunci publik ssh Anda dimasukkan ke mesin instance GCP Compute, Anda bisa ssh ke mesin instance Anda. Tetapi Anda harus menggunakan nama pengguna yang benar.

Misalnya, jika nama pengguna GCP saya adalah fredsmith, dan IP eksternal GCP saya adalah 5.6.7.8, maka perintah ssh saya akan terlihat seperti ini:

ssh fredsmith@5.6.7.8

Dan jelas, kunci ssh pribadi Anda harus cocok dengan kunci publik yang Anda masukkan ke dalam meta-data ssh untuk contoh Anda.

Setelah masuk, Anda dapat menjalankan sudo dan berfungsi karena GCP telah menyiapkan instance ini dengan kredensial Anda (fredsmith) dan telah menempatkan Anda (fredsmith) ke dalam grup yang diperlukan sehingga sudo bekerja yang untuk GCP tampaknya adalah google-sudoers.

Jika Anda ingin membuat pengguna lain dan memungkinkan pengguna itu memiliki hak istimewa sudo, maka lihat @TimmyBrowne menjawab ketika ia menjelaskan ini.

Saya masih tidak yakin mengapa saya mendapatkan hasil yang tidak konsisten di mana kadang-kadang saya bisa sudo dan lain kali saya tidak bisa karena file otor_keys saya dihapus, tetapi saya tidak punya cukup informasi untuk melanjutkan ini lebih jauh.

Karena Timmy Browne menjawab pertanyaan saya ketika dia memahaminya, dan sepertinya itu benar. Saya akan memberinya pujian untuk jawaban ini, tetapi ingin memposting jawaban saya sehingga jika orang lain melihat perilaku yang sama ini mereka dapat meningkatkan jawaban ini dan mudah-mudahan kita dapat melacaknya.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.