Buat pengguna SSH baru di Server Ubuntu

104

Baru saja membuat server Ubuntu virtual baru dan saya sedang dalam proses pengerasan untuk penggunaan produksi. Saat ini saya memiliki akun root. Saya ingin melakukan hal berikut:

  • Buat pengguna baru (sebut saja mereka jimuntuk selanjutnya). Saya ingin mereka memiliki /home/direktori.
  • Berikan jimakses SSH.
  • Izinkan jimuntuk sumelakukan root tetapi tidak melakukan sudooperasi.
  • Matikan akses SSH root.
  • Pindahkan SSHd ke port non-standar untuk membantu menghentikan serangan brute.

Masalah saya terletak pada dua item pertama. Saya sudah menemukan useraddtetapi untuk beberapa alasan, saya tidak bisa masuk sebagai pengguna yang dibuat dengan SSH. Apakah saya perlu mengalahkan SSHd untuk mengizinkan ini?

Oli
sumber
Hai! Saya dapat membantu Anda di server, saya tidak tahu apa masalah Anda dengan SSH, karena bagi saya dengan konfigurasi default tidak pernah menolak koneksi saya. Anda mungkin melihat man 5 nologin , ini menulis, bahwa jika / etc / nologin ada, Anda dapat login dengan root saja. Coba masuk secara normal, lalu tulis hasilnya.
antivirtel
Apa shell pengguna? Apakah itu / bin / bash? Lihat di / etc / password. Pastikan itu bukan / dev / null atau / bin / false.
LFC_fan
Ya LFC_fan, atau / etc / nologin juga. Gunakan (sudo) cat / etc / passwd | grep jim
antivirtel
1
@B. Roland saya punya /etc/nologinfile tapi itu kosong. Saya menghapusnya dan memulai kembali ssh tetapi masih tetap merespons Permission denied, please try again.ketika saya mencoba dan masuk.
Oli
@LFC_fan it's / bin / bash
Oli

Jawaban:

99

Edit (sebagai root) /etc/ssh/sshd_config. Tambahkan yang berikut untuk itu:

Port 1234
PermitRootLogin no
AllowUsers jim

Port 1234menyebabkan SSH untuk mendengarkan pada port 1234. Anda dapat menggunakan port yang tidak digunakan mulai 1 hingga 65535. Disarankan untuk memilih port istimewa (port 1-1024) yang hanya dapat digunakan oleh root. Jika daemon SSH Anda berhenti bekerja karena suatu alasan, aplikasi jahat tidak dapat memotong koneksi.

PermitRootLogin melarang login root langsung.

AllowUsers jimmemungkinkan pengguna jimuntuk masuk melalui SSH. Jika Anda tidak harus masuk dari mana-mana, Anda bisa membuatnya lebih aman dengan membatasi jim ke alamat IP (ganti 1.2.3.4 dengan alamat IP Anda yang sebenarnya):

AllowUsers [email protected]

Perubahan pada file konfigurasi /etc/ssh/sshd_configtidak segera diterapkan, untuk memuat ulang konfigurasi, jalankan:

sudo service ssh reload
Lekensteyn
sumber
10
+1: Catatan: petunjuk ini masih berlaku untuk versi Ubuntu yang lebih baru (mis. 13.04). Jika Anda ingin rootlogin, bagaimanapun, (mungkin Anda masih menyiapkan server), Anda harus mengatur PermitRootLoginuntuk yesdan juga menambahkan rootuntuk AllowUsers.
JRG-Developer
4
apa kata sandi untuk pengguna ini?
Wolfpack'08
VPS saya dilengkapi dengan kata sandi root untuk login SSH pada port 22. Menambahkan jawaban ke sshd_config mengakibatkan root tidak dapat login. Apakah ini karena saya juga menggunakan port 22 untuk jim, atau adakah alasan lain?
Wolfpack'08
1
@Lekensteyn Saya baru saja menemukan menambahkan pengguna baru ke Ubuntu itu sendiri membuat akun ssh untuk pengguna itu .... useradd -m -G sudo,adm -s /bin/bash mecharokdanpasswd mecharok
Wolfpack'08
3
@ Wolfpack'08 Gunakan AllowUsers username1,username2untuk membatasi login SSH ke pengguna tersebut. Pastikan itu sshddimuat ulang. Jika ini tidak membantu, silakan buat pertanyaan baru.
Lekensteyn
97

SSH sangat pilih-pilih tentang izin direktori dan file. Pastikan bahwa:

  1. Direktori /home/username/.ssh memiliki izin "700" dan dimiliki oleh pengguna (bukan root!)
  2. / Home / nama pengguna / ssh / berwenang_kunci memiliki izin "600" dan dimiliki oleh pengguna

Salin kunci publik Anda ke file otor_keys.

sudo chown -R username:username /home/username/.ssh
sudo chmod 0700 /home/username/.ssh
sudo chmod 0600 /home/username/.ssh/authorized_keys

Ada NO perlu untuk menambahkan pengguna untuk / etc / ssh / ssh_config.

dh1tw
sumber
2
Masalah saya chown, saya buat ~./sshsebagai root dan tidak pernah memberikan kepemilikan pengguna.
Gerve
1
Masalah saya adalah bahwa saya mencoba untuk menggunakan /root/.ssh/authorized_keysbukan /home/bob/.ssh/authorized_keys.
Alex W
Saya dapat mengkonfirmasi: di hosting VPS kami tidak perlu mengedit ssh_config. Menyiapkan direktori dan file itu sudah cukup.
superjos
2
Bagi saya itu harus chmod 755 /home/username/.ssh kalau tidak itu tidak akan berhasil.
Jim W
Jauh lebih mudah untuk login sebagai pengguna (atau sudo su --login {user}) dan menjalankan ssh-keygen-> Folder ".ssh", kunci + cert dan izin selesai. Cukup buat otor_keys sesuai instruksi Anda.
bshea
13

Akan ada petunjuk /var/log/auth.logmengapa SSH (atau PAM) menolak upaya login. Petunjuk tambahan dapat ditemukan dengan menggunakan -vopsi dengan klien ssh . Beberapa situasi umum, beberapa disebutkan dalam jawaban lain:

  • akun pengguna tidak memiliki kata sandi, atau dinonaktifkan (lihat man passwd, coba mengatur ulang kata sandi atau memeriksa konten /etc/shadow).
  • /etc/ssh/sshd_configdikonfigurasi untuk melarang login ( DenyUsers, AllowUsers, PasswordAuthentication, PubkeyAuthentication, UsePAMdll, lihat man sshd_config).
  • shell pengguna tidak terdaftar di /etc/shells.
  • berbagai masalah izin pada direktori atau file yang terkait dengan SSH operasi: /etc/ssh, /home/jim/.ssh, /home/jim/.ssh/*, dll

Saya juga merekomendasikan menggunakan adduser (bukan useradd ) untuk menambahkan pengguna baru; itu sedikit lebih ramah tentang berbagai pengaturan akun default.

Selama pengguna bukan bagian dari admingrup, mereka tidak akan dapat melakukan sudo untuk me -root. Bagi mereka untuk menggunakan su , Anda akan perlu untuk menetapkan password root ( passwd root), setelah itu saya sarankan pengaturan PermitRootLogin=nodi /etc/ssh/sshd_config.

Kees Cook
sumber
Terima kasih banyak atas jawaban yang bagus - khususnya "adduser" banyak membantu!
vishal.biyani
11

Saya bisa saja salah tetapi saya selalu harus menginstal daemon server sebelum saya dapat menghubungkan (Setidaknya di desktop) ssh diinstal secara default tetapi itu hanya klien

perintah ini menginstal server

sudo apt-get install openssh-server

Anda dapat mengubah port dan menghentikan login root dengan mengedit

/etc/ssh/sshd_config

Ini mengharuskan Anda untuk me-restart layanan.

sudo service ssh restart

Matt Mootz
sumber
Ini adalah server virtual (VPS) sehingga SSH diinstal secara default. Ini satu-satunya antarmuka saya ke server. Dan Anda dapat memuat ulang konfigurasi melalui sudo /etc/init.d/ssh reloadgantinya, tetapi informasi yang baik tetap.
Oli
8

Jim tidak akan memiliki akses SSH sampai Anda menetapkan kata sandi. Sebagai root jalankan:

grep -i "jim" /etc/shadow | awk -F':' '{ print $2 }'

Jika perintah ini mengembalikan "!" karakter lalu masuk dinonaktifkan untuk akun ini. Eksekusi passwd jimsebagai root akan meminta Anda untuk string kata sandi baru dan dikonfirmasi setelah perintah grep di atas harus mengembalikan string hash yang mewakili kata sandi untuk jim.

Pastikan juga untuk memverifikasi bahwa jim memiliki shell login, yang ditetapkan secara default, dan direktori home yang ada.

Harap dicatat posting lekensteyn untuk informasi tentang memodifikasi pengaturan server SSH.

Tok
sumber
"Jika perintah ini mengembalikan karakter"! "Maka login dinonaktifkan untuk akun ini" Catatan ini tidak berarti Anda tidak dapat SSH; hanya saja Anda tidak dapat melakukannya dengan kata sandi (vs. dengan kunci publik Anda).
bfontaine
3

Dalam kasus saya, saya memiliki grup yang diizinkan mengakses dan pengguna bukan bagian darinya. Ini menyelesaikannya untuk saya.

Menggunakan contoh di atas dengan pengguna jimdan menganggap anggota grup jimsebagai itu hanya grup (mengeluarkan groupsperintah saat masuk jimuntuk menemukan grup Anda adalah bagian dari). Dalam /etc/ssh/sshd_configfile saya, saya punya AllowGroups sshusersentri dan dengan demikian perlu ditambahkan jimke sshusersgrup. Di bawah ini adalah bagaimana ini akan dicapai:

usermod -a -G sshusers jim

Ganti grup dan pengguna Anda sesuai konfigurasi Anda.

Joshua Fricke
sumber
1
Anda harus meningkatkan jawaban Anda dengan merujuk ke sumber yang lebih baik menjelaskan contoh Anda atau dengan menambahkan informasi yang relevan mendasarkan contoh Anda pada pertanyaan awal OP. misalnya, pengguna yang ditentukan jimsebagai pengguna dummy untuk membantu memberikan konteks. artikel di sini menjelaskannya dengan baik.
0

Mungkin ada beberapa kasus yang PasswordAuthenticationdinonaktifkan secara default.

Mohon periksa /etc/ssh/sshd_configdan pastikan bahwa PasswordAuthenticationatribut diatur ke yes.

Aldee
sumber
0

@Lekensteyn Saya tidak dapat meninggalkan komentar untuk jawaban pertanyaan karena saya tidak memiliki reputasi - tetapi saya mencoba menambahkan

AllowUsers existingUser,newUser

ke file / etc / ssh / sshd_config saya dan sekarang saya tidak bisa lagi ssh dengan pengguna yang sudah ada atau pengguna yang baru.

pjjetty
sumber
Saya mengerti rasa sakit Anda: DI punya masalah yang sama sekali. Solusi: AllowUsers existingUser@* newUser@*
İsmail Atkurt