Ich muss eine Sicherung eines Servers auf meinem Computer mit Duplicity durchführen:
duplicity /etc sftp://[email protected]//home/backup
Bevor dies durchgeführt werden kann, muss ich den passwortlosen Zugriff wie folgt zulassen:
$ ssh-keygen
$ ssh-copy-id [email protected]
$ ssh [email protected]
Meine Frage ist, wie ich den Befehl auf nur diese SFTP-Übertragung im generierten öffentlichen Schlüssel beschränken kann.
command="restrict to sftp",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAA…
Und wie kann ich das Problem "Fehlender bekannter Host" bei jeder Änderung meiner IP-Adresse überwinden, da ich eine dynamische IP-Adresse habe?
ssh
sftp
key-authentication
account-restrictions
Fragenüberlauf
quelle
quelle
Antworten:
Hierfür gibt es zwei Methoden.
1. - Einschränkung durch sshd
Bei dieser Methode wird die SFTP-Funktion in Ihrem SSH-Daemon eingerichtet
sshd
. Dies wird über die/etc/ssh/sshd_config
Konfigurationsdatei gesteuert . HINWEIS: Dadurch wird der Benutzer darauf beschränkt,backup
nur SFTP auf den Server zu übertragen.2. - Einschränkung durch autorisierte_Tasten
Diese Methode beinhaltet keine Änderungen an der
sshd_config
Datei. Sie können einen Benutzer + einen SSH-Schlüssel über diecommand=
Funktion, die Sie bereits in Ihrer Frage erwähnt haben, auf einen einzelnen Befehl beschränken . Der Trick besteht darin, welchen Befehl Sie einschließen. Sie können den SFTP-Server in diesecommand=
Zeile einfügen. Dies hat den gleichen Effekt wie das Einrichten des SFTP-Servers in Ihrersshd_config
Datei.HINWEIS: Wenn der Benutzer Schreibzugriff hat
~/.ssh/authorized_keys
, kann er ihn lesen und / oder ändern. Zum Beispiel könnten sie es herunterladen, bearbeiten und erneut hochladen, indem sie das entfernencommmand=...
und ihm uneingeschränkten Befehlszugriff gewähren, einschließlich der Shell. Wenn der Benutzer Schreibzugriff hat~/.ssh
, kann er auch einfach die Verknüpfung aufheben und die Datei neu erstellen oderchmod
sie zum Schreiben verwenden. Es gibt viele mögliche Lösungen, z. B. das Ablegen der~/.ssh/authorized_keys
Dateien an einem nicht vom Benutzer beschreibbaren Ort, z. B.:Dies ist schwieriger, aber auch mit der
from=
Funktion in derauthorized_keys
Datei möglich. Hier beschränken wir den Zugriff nur vom Host aussomehost.dyndns.org
.Die zusätzlichen Einstellungen nach dem
command=
sind ebenso wichtig, da sie die Verwendung des SSH-Schlüssels noch weiter einschränken.Aufschlüsselung der Funktionen
from='hostname1,hostname2,''
- Beschränkt den Zugriff über die angegebenen IP- oder Hostnamenmustercommand='command'
- Führt den angegebenen Befehl nach der Authentifizierung ausno-pty
- Weist keine Pty zu (erlaubt keine interaktive Anmeldung)no-port-forwarding
- Ermöglicht keine Portweiterleitungno-X11-forwarding
- Der Benutzer kann die X11-GUIs für die Anzeige nicht entfernenno-agent-forwarding
- Der Benutzer kann diesen Host nicht an andere interne Hosts weiterleitenUm die Meldung über die "fehlenden bekannten Hosts" zu entfernen, können Sie dem Client diese SSH-Option hinzufügen, wenn er eine Verbindung wie folgt herstellt:
ssh_config
Ausführliche Informationen zu diesem Schalter finden Sie in der Manpage .Einschränkung der Benutzer-Shell
Bei beiden oben genannten Lösungen möchten Sie den
backup
Benutzer wahrscheinlich sperren, indem Sie auch die Shell dieses Benutzers in der/etc/passwd
Datei einschränken . Normalerweise möchten Sie es einstellenscponly
, aber es gibt auch andere Möglichkeiten dafür. In diesem U & L-Q & A mit dem Titel " Benötigen Sie eine Shell für SCP? "Die Verwendung von
/sbin/nologin
kann auch verwendet werden, wenn Sie die Chroot-Funktionsshd_config
wie oben in Nr. 1 beschrieben verwenden . Wenn Sie sich jedoch für die in Nr. 2 beschriebene Methode entscheiden , müssen Sie wahrscheinlichscponly
oder etwas anderes für die Shell des Benutzers verwenden/etc/passwd
.BONUS - Erweiterung Nr. 2 oben
Wenn Sie eine Reihe von Befehlen für diesen Benutzer verfügbar machen müssen, können Sie dies auch tun. Erstellen Sie ein Skript wie folgt
/home/backup/commands.sh
:Anschließend richten Sie die
authorized_keys
Datei folgendermaßen ein:Der
backup
Benutzer kann diese Befehle dann folgendermaßen ausführen:Verweise
quelle
/sbin/nologin
wird verhindert, dass der Server mit SFTP auf meinen Computer zugreift. Das habe ich versucht.known_hosts
Datei aufgeführt ist. Marki lieferte in seinem Kommentar die richtige Lösung. Derfrom
Parameter in derauthorized_keys
Datei auf meinem Computer C beschränkt nur den Ort, von dem aus S eine Verbindung zu C herstellen kann./sbin/nologin
funktioniert, wenn ich den Befehl force verwende,internal-sftp
anstelle/usr/libexec/openssh/sftp-server
dessen Sie das Zertifikat angegeben haben. Ich denke, das sind zwei verschiedene Subsysteme. Und das Erstellen eines Chroot-Verzeichnisses für das erstere ist viel einfacher.Eingeschränkte Shell
Sie müssen eine eingeschränkte Shell wie scponly oder rssh zuweisen.
Wenn Sie scp oder sftp verwenden, stellen Sie über ssh eine Verbindung zum Remote-Standort her, und die Remote-Shell führt einen scp-Prozess oder einen sftp-Prozess aus. Was Sie brauchen, ist eine eingeschränkte Shell, mit der nur scp oder sftp die Anmeldung sperren können.
quelle