Wie richte ich einen SFTP-Benutzer so ein, dass er sich mit einem Kennwort bei einem EC2-Ubuntu-Server anmeldet?

14

Ich habe einen Ubuntu-Server auf einer EC2-Instanz. Um mich auf diesem Server anzumelden, verwende ich eine Zertifikatsdatei ohne Passwort.

Ich habe vsftpd installiert und konfiguriert und einen Benutzer erstellt (nennen wir ihn "Testbenutzer"), für den ich ein / bin / false-ssh-Terminal festgelegt habe, damit es nur über sftp eine Verbindung herstellen und Dateien auf sein Zuhause hochladen / darauf zugreifen kann Verzeichnis.

Allerdings - wenn ich versuche, von meinem Computer aus eine Verbindung zum Server herzustellen, wird ausgeführt

sftp testuser@my-ec2-server

Ich bekomme

Erlaubnis verweigert (publickey).
Verbindung geschlossen

Nachrichten, damit ich mich nicht anmelden kann.

Wie kann ich die Zertifikatsanforderung nur für diesen Benutzer entfernen (dh, der "Ubuntu" -Benutzer muss sich weiterhin mit der Zertifikatsdatei über ssh anmelden), damit normale SFTP-Clients eine Verbindung mit einem Benutzernamen und einem Kennwort herstellen können?

Vielen Dank.

PS Mit Ubuntu Server 10.10 offizielles AMI von Canonical, 64bit auf einer Micro-Instanz.

Doron
quelle

Antworten:

10

Um das zu erreichen, was Sie wollen, müssen Sie zwei verschiedene Dinge tun

  1. Ändern Sie sshd config, um Passwörter zu akzeptieren

Zuallererst möchte ich sagen, dass es eine schlechte Idee ist, dies zu tun. Ich würde lieber ein Zertifikat für Ihren Benutzer generieren, als Passwörter zu aktivieren. Wenn Sie dies dennoch tun möchten, müssen Sie es nur bearbeiten /etc/ssh/sshd_configund ändern oder auskommentieren, damit es angezeigt wird PasswordAuthentication yes. Sobald dies erledigt ist, starte sshd neuservice ssh restart

  1. Lassen Sie Benutzer nur FTP mit SFTP und keine Shell haben

Um dies zu vervollständigen, müssen Sie rsh (Resticted Shell) installieren und die User Shell darauf ändern chsh username

Lynxman
quelle
Ich möchte nur, dass dieser bestimmte Benutzer (Testbenutzer), der nur über SFTP-Zugriff verfügt, anstelle eines Zertifikats ein Kennwort verwendet. Der Teil, dem Benutzer keinen Zugriff über ssh zu gewähren, wurde bereits ausgeführt, indem der Bash-Typ als / bin / false definiert wurde
Doron
1
Doron, Sie können nicht nur einen Benutzer über passwd zulassen, Sie erlauben entweder die Kennwortauthentifizierung für alle oder für niemanden. /bin/falseErlaubt auch keine SFTP-Verbindungen (jede SSH-Verbindung benötigt eine gültige Shell, da macht
RSH
1
Dies hat bei Ubuntu EC2 nicht funktioniert. Ich bin mir nicht sicher, ob der zusätzliche Schritt, den ich vermisse, Port 22 offen ist
Doug Molineux,
Unter serverfault.com/questions/154957/… können Sie nur den SFTP-Benutzer mit einem Kennwort einrichten ...
Raman,
-1

Hier ist eine schrittweise Anleitung, um Folgendes zu ermöglichen:

  1. SFTP-Zugriff auf / home / bob / uploads für Benutzer bob
  2. Lock Bob aus SSH
  3. Verwenden Sie Benutzernamen / Passwörter anstelle von Schlüsseln:

Bearbeiten Sie zuerst die Datei / etc / ssh / sshd_config:

sudo nano /etc/ssh/sshd

Scrolle nach unten und ändere:

PasswordAuthentication yes

und füge dies unten hinzu:

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

Drücken Sie Strg-X, um den Vorgang zu beenden und zu speichern.

Fügen Sie nun den Benutzer hinzu:

sudo useradd bob
sudo passwd bob

Fügen Sie nun die Gruppen hinzu und deaktivieren Sie ssh:

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

Legen Sie nun die Berechtigungen fest:

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

All dies ist, während Sie als Root-Benutzer angemeldet sind (ec2-Benutzer unter Amazon Linux AMIs).

Rob Mulder
quelle
3
Keine Notwendigkeit, die Hose fallen zu lassen, nur um einem Benutzer die Verwendung der Kennwortauthentifizierung zu ermöglichen.
EEAA