Atur sftp untuk menggunakan kata sandi tetapi ssh untuk tidak menggunakan kata sandi

15

Apakah mungkin untuk mengatur pengguna di ubuntu dengan openssh sehingga ssh tidak menggunakan otentikasi kata sandi tetapi sftp melakukannya?

Saya berasumsi bahwa jika saya berubah /etc/ssh/ssh_configuntuk memilikinyaPasswordAuthentication yes ini memungkinkan pengguna untuk menggunakan kata sandi untuk login dengan ssh dan sftp.

Sunting: Tujuan saya di sini adalah untuk membiarkan beberapa pengguna sftp dengan kata sandi, bukan keyfile. Tapi saya tidak ingin pengguna ssh dapat login dengan kata sandi, saya ingin mereka harus menggunakan keyfile. Jika ini membantu, saya tidak perlu pengguna sftp untuk bisa masuk, mereka hanya perlu melakukan sftp.

sayang
sumber

Jawaban:

26

Seperti yang saya mengerti Anda memiliki (setidaknya untuk masalah khusus ini) dua yang berbeda kelompok pengguna, salah satu bisa login melalui SSH dan mendapatkan shell interaktif (sebut kelompok ssh) dan satu bisa login melalui SFTP dan hanya mendapatkan SFTP shell (sebut saja grup sftp).

Sekarang buat grup sshdan sftpdi sistem Anda dengan groupadd, letakkan masing-masing pengguna di grup ( gpasswd -a $USERNAME $GROUPNAME) dan tambahkan baris berikut di akhir ( ini penting! ) Dari sshd_configlokasi Anda di /etc/ssh/sshd_config:

Match Group sftp
  PasswordAuthentication yes
  # Further directives for users in the "sftp" group

Match Group ssh
  PasswordAuthentication no
  # Further directives for users in the "ssh" group

Baca tentang Matcharahan di sshd_config (5) dan tentang pola yang diizinkan di ssh_config (5) .

Anda juga harus memulai kembali sshproses agar ini berlaku:

sudo /etc/init.d/ssh restart

Joseph
sumber
6
Ini tidak didokumentasikan dengan baik, tetapi hanya satu arahan Match akan digunakan; Anda harus meletakkan arahan paling spesifik di atas. Jika Anda mencantumkan sftp terlebih dahulu, pengguna yang berada di kedua grup akan diizinkan menggunakan PasswordAuthentication.
Tobu
Terima kasih! Sudah ada sshgrup di kotak ubuntu saya, jadi saya benar-benar hanya perlu menambahkan sftpdan memasukkan pengguna sftp ke grup itu. Saya akan menggabungkan jawaban Anda dengan menggunakan scponlyagar pengguna sftp tidak masuk.
dar
2
Jika PasswordAuthenticationdiatur nolebih jauh, apakah ini masih berfungsi? Apakah Match Groupmenimpanya untuk pengguna sftp? Karena itulah yang saya miliki dan tidak berfungsi. Saya bisa ssh in dengan kunci, tetapi tidak bisa sebagai pengguna sftp.
alphadogg
0

Tidak, dan saya tidak melihat bagaimana ini akan meningkatkan keamanan, jadi apa gunanya?

berwenang_kunci dapat mengizinkan perintah berbeda untuk kunci berbeda, jika itu yang Anda cari. Jika tidak, Anda memiliki opsi untuk membuat beberapa akun dan menggunakan acl atau sudo.

Tobu
sumber
Saya tidak berusaha meningkatkan keamanan. Saya mencoba untuk membuatnya lebih mudah bagi beberapa pengguna untuk menggunakan kata sandi daripada keyfile untuk akses sftp. Namun, saya tidak ingin ada yang menggunakan kata sandi untuk akses ssh.
dar
@ Dar OK; akun yang berbeda. Jika mereka adalah akun yang sama, seseorang yang mengetahui kata sandi sftp dapat menimpa beberapa file profil (.ssh / rc, .profile, .bashrc ...) dan mendapatkan hak yang sama dengan seseorang yang mengetahui kunci privat.
Tobu
0

Mengambil tikaman dalam gelap di sini, tetapi Anda mungkin menemukan utas ini menarik.

Apakah adil untuk memenjarakan pengguna SFTP saya ke direktori home mereka?

Tyler K.
sumber
Saya tidak melihat apa pun di sana tentang PasswordAuthentication, perbaiki jika saya salah.
dar
Tidak, kamu benar. Tidak jelas apa yang ingin Anda lakukan dengan SFTP vs SSH. Saya melihat dari komentar lain bahwa Anda ingin pengguna menggunakan kata sandi untuk SFTP tetapi tidak untuk SSH. Mengapa?
Tyler K
Karena para pengguna ini yang perlu menggunakan sftp merasa keyfile menantang, tetapi mereka mengerti cara mengetikkan kata sandi. Itu bermuara pada masalah pengalaman pengguna untuk sftp. Tapi saya ingin meminimalkan area permukaan serangan dengan menjaga kata sandi dari campuran ssh.
dar
SFTP bekerja dengan terlebih dahulu membuka terowongan ssh, kemudian mengirimkan file melalui FTP. Anda tidak bisa menceraikan keduanya. Saya kira Anda bisa dengan mengatur beberapa ACL, tapi itu tidak masuk akal.
Tyler K