sftp-Server mit ProFTPd bereitstellen:
Eine Anforderung war einen sftp-Server mit Authentifizierung über einen Public-Key (vom Clients-System) zu realisieren.
Installation von Proftpd
apt-get update
apt-get install proftpd
In der Konfiguration (/etc/proftpd/proftpd.conf) Folgendes anpassen:
ServerName "sftp.example.net" DefaultRoot ~
Im Anschluss wird eine neue Datei unter /etc/proftpd/conf.d/stfpd.conf mit folgendem Inhalt angelegt:
<IfModule mod_sftp.c> SFTPEngine on # If you want your SFTP server on a different port, change the following # line accordingly Port 2222 # Log file SFTPLog /var/log/proftpd/sftp.log # Configure both the RSA and DSA host keys, using the same host key # files that OpenSSH uses. SFTPHostKey /etc/ssh/ssh_host_rsa_key SFTPHostKey /etc/ssh/ssh_host_dsa_key SFTPAuthorizedUserKeys file:/etc/proftpd/authorized_keys/%u # Enable compression SFTPCompression delayed # Default is: publickey password SFTPAuthMethods publickey </IfModule>
Jetzt legt man einen Ordner an, wo die PublicKeys abgespeichert werden.
mkdir /etc/proftpd/authorized_keys
Anschließend proftpd neu starten
service proftpd restart
Anlegen eine Benutzers mit SSH-Key:
useradd ftpuser -m -s /bin/bash
sudo -u ftpuser ssh-keygen -t rsa
Beim Assistenten die Abfragen bestätigen und ohne Passpghrase weiter bestätigen.
Jetzt wirde der vorher generierte Benutzer-Key in ein konformes Format (RFC4716) konvertiert und in das entsprechende Verzeichnis des Benutzers kopiert:
Dies kann mit beliebig vielen Benutzern geschehen.
Alternativ kann hier auch ein bestehender Private-Key eines Client(-Servers) genommen werden - hier wird einfach der Inhalt der Datei id_sa.pub entsprechend mit dem Key des Client-(Servers) ersetzt und im Anschluss konvertiert.
ssh-keygen -e -f ~ftpuser/.ssh/id_rsa.pub | tee /etc/proftpd/authorized_keys/ftpuser
Abschließend sollte der proftpd Dienst noch neu gestartet werden:
service proftpd restart
Nun kann eine Verbindung mit einem entsprechenden Client oder Software aufgebaut werden (Port 2222 beachten)