Bagaimana cara mengatur pengguna sftp untuk login dengan kata sandi ke server ubuntu EC2?

14

Saya memiliki Server Ubuntu yang berjalan pada instance EC2. Untuk masuk ke server itu saya menggunakan file sertifikat tanpa kata sandi.

Saya telah menginstal dan mengkonfigurasi vsftpd dan membuat pengguna (sebut saja dia "testuser") yang telah saya atur terminal / bin / false ssh sehingga hanya dapat terhubung melalui sftp dan mengunggah / mengakses file di rumahnya direktori.

Namun - ketika saya mencoba untuk terhubung ke server dari komputer saya, berjalan

sftp testuser@my-ec2-server

saya mendapat

Izin ditolak (publickey).
Koneksi ditutup

pesan jadi saya tidak bisa masuk.

Bagaimana saya bisa menghapus persyaratan sertifikat hanya untuk pengguna ini (artinya, pengguna "ubuntu" masih harus menggunakan file sertifikat untuk login melalui ssh), sehingga klien sftp normal akan dapat terhubung menggunakan nama pengguna dan kata sandi?

Terima kasih.

PS Menggunakan Ubuntu Server 10.10 AMI resmi dari kanonik, 64bit pada instance mikro.

Doron
sumber

Jawaban:

10

Untuk mencapai apa yang Anda inginkan, Anda perlu melakukan dua hal yang berbeda

  1. Ubah sshd config untuk menerima kata sandi

Saya akan mengatakan pertama-tama bahwa ini adalah ide yang buruk untuk melakukan ini, saya lebih suka menghasilkan sertifikat untuk pengguna Anda daripada mengaktifkan kata sandi, namun jika Anda ingin melakukannya cukup edit /etc/ssh/sshd_configdan ubah atau batalkan komentar yang ditampilkan PasswordAuthentication yes. Setelah selesai restart sshdservice ssh restart

  1. Biarkan pengguna hanya FTP menggunakan sftp dan tidak memiliki shell

Untuk memastikan bahwa Anda perlu menginstal rsh (resticted shell) dan mengubah shell pengguna untuk itu chsh username

lynxman
sumber
Saya hanya ingin pengguna khusus ini (penguji) yang hanya akan memiliki akses sftp, untuk menggunakan kata sandi dan bukan sertifikat. Bagian dari tidak mengizinkan pengguna untuk mengakses melalui ssh, saya sudah melakukannya dengan mendefinisikan tipe bash sebagai / bin / false
Doron
1
Doron, Anda tidak akan bisa hanya membolehkan satu pengguna melalui passwd, Anda juga mengizinkan authasi kata sandi untuk semua orang atau untuk siapa pun. Juga /bin/falsetidak akan mengizinkan koneksi sftp (koneksi ssh apa pun membutuhkan shell yang valid, di situlah rsh melakukan trik)
lynxman
1
Ini tidak berfungsi untuk saya di Ubuntu EC2, tidak yakin apa langkah tambahan yang saya lewatkan adalah, port 22 terbuka
Doug Molineux
Lihat serverfault.com/questions/154957/... untuk mengatur hanya pengguna sftp dengan kata sandi ...
Raman
-1

Berikut ini adalah panduan langkah demi langkah untuk memungkinkan:

  1. Akses SFTP ke / home / bob / upload untuk pengguna bob
  2. Kunci bob dari SSH
  3. Gunakan nama pengguna / kata sandi daripada kunci:

Pertama, edit file / etc / ssh / sshd_config Anda:

sudo nano /etc/ssh/sshd

Gulir ke bawah dan modifikasi:

PasswordAuthentication yes

dan tambahkan ini di bagian bawah:

Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no  

Tekan Ctrl-X untuk keluar dan menyimpan.

Sekarang tambahkan pengguna:

sudo useradd bob
sudo passwd bob

Sekarang tambahkan grup dan nonaktifkan ssh:

sudo groupadd sftpusers
sudo usermod  -g sftpusers bob
sudo usermod -s /usr/bin/rssh bob
sudo usermod -d /home/bob bob

Sekarang atur izin:

sudo chown root:root /home/bob/
sudo chmod 755 /home/bob/
sudo mkdir /home/bob/uploads
sudo chown bob /home/bob/uploads

sudo service sshd restart

Semua ini saat masuk sebagai pengguna root (pengguna ec2 pada Amazon Linux AMIs)

Rob Mulder
sumber
3
Tidak perlu melepaskan celana Anda hanya untuk memungkinkan satu pengguna untuk menggunakan kata sandi auth.
EEAA