Lösung 1:
Die rssh-Shell (http://pizzashack.org/rssh/) wurde genau für diesen Zweck entwickelt.
Da RHEL/CentOS 5.2 kein Paket für rssh enthält, können Sie hier nach einem RPM suchen:http://dag.wieers.com/rpm/packages/rssh/
Um es zu verwenden, legen Sie es einfach als Shell für einen neuen Benutzer wie folgt fest:
useradd -m -d /home/scpuser1 -s /usr/bin/rssh scpuser1
passwd scpuser1
..oder ändern Sie die Shell für eine vorhandene wie folgt:
chsh -s /usr/bin/rssh scpuser1
..und editiere /etc/rssh.conf
um die RSSH-Shell zu konfigurieren - insbesondere allowscp
auskommentieren Zeile, um den SCP-Zugriff für alle RSS-Benutzer zu aktivieren.
(Vielleicht möchten Sie auch chroot verwenden, um die Benutzer in ihrem Zuhause zu halten, aber das ist eine andere Geschichte.)
Lösung 2:
Ich bin viel spät dran, aber Sie könnten ssh-Schlüssel verwenden und den genauen Befehl angeben, der in ihrer ~/.ssh/authorized_keys-Datei zulässig ist, z.
no-port-forwarding,no-pty,command="scp source target" ssh-dss ...
Möglicherweise müssen Sie ps to auf dem Ziel verwenden, um die richtigen Befehlseinstellungen festzulegen.
PS:Wenn Sie einen Test-scp-Befehl mit "-v" ausführen, können Sie so etwas sehen
debug1: Sending command: scp -v -t myfile.txt
Sie werden feststellen, dass "-t" eine undokumentierte scp-Option ist, die vom Programm am anderen Ende verwendet wird. Dies gibt Ihnen eine Vorstellung davon, was Sie in authorisierte_Schlüssel einfügen müssen.
BEARBEITEN: Weitere Informationen (mit mehreren Links) finden Sie in dieser StackOverflow-Frage.
Hier ist ein funktionierendes Beispiel für einen Benutzer namens backup_user
auf der Serverseite.
~backup_user/.ssh/authorized_keys
Inhalt auf Serverseite (mit einigen weiteren Sicherheitseinschränkungen):
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="scp -v -r -d -t ~/CONTENT" ssh-rsa AAAAMYRSAKEY...
Erstellen Sie einen Link in ~backup_user/, der auf das Verzeichnis verweist, in dem der Inhalt zugänglich sein soll.
$ ln -s /path/to/directory/with/accessible/content ~backup_user/CONTENT
Nun sollte auf der Clientseite der folgende Befehl funktionieren:
scp -v -r -P 2222 -i .ssh/id_rsa_key_file path/to/data [email protected]:~/CONTENT
Was dieser Befehl bewirkt:
- Es zeigt ausführliche Informationen an (optional :Sie können
-v
entfernen sowohl aus der Befehlsdatei als auch aus der Datei "authorized_keys") - Es kopiert rekursiv den Inhalt von path/to/data. (optional :Sie können
-r
entfernen sowohl aus der Befehlsdatei als auch aus der Datei "authorized_keys", wenn Sie keine rekursive Kopie erstellen möchten) - Es verwendet Port 2222, um sich mit dem Server zu verbinden (optional :Sie können
-P 2222
entfernen aus dem Befehl) - Es verwendet eine Identitätsdatei, um die Verbindung zu automatisieren (optional :Sie können
-i .ssh/id_rsa_key_file
entfernen - Der Inhalt von
path/to/data
wird in/path/to/directory/with/accessible/content/
kopiert
Um eine Kopie einer Datei (oder mehrerer) vom Server zum Client zu erstellen, sollten Sie ein Shell-Skript erstellen, das dies wie hier beschrieben handhabt
Lösung 3:
Ich komme etwas spät zur Party, aber ich schlage vor, dass Sie einen Blick auf ForceCommand
werfen Direktive von OpenSSH.
Subsystem sftp internal-sftp
Match group sftponly
ForceCommand internal-sftp
Zugegeben, das ist SFTP und nicht SCP, aber es erreicht das gleiche Ziel, sicherer als mit einer eingeschränkten Shell. Außerdem können Sie den Benutzer chrooten, wenn Sie möchten.
Lösung 4:
Ich benutze MySecureShell, um dies zu tun. Sie können auch andere Einschränkungen konfigurieren.
https://github.com/mysecureshell/mysecureshell
Beschränkt Verbindungen nur auf SFTP/SCP. Kein Shell-Zugriff.
Lösung 5:
Ich würde empfehlen, scponly zu verwenden.
Es ist eine eingeschränkte Shell, die es Benutzern ermöglicht, genau das zu tun, wonach es sich anhört, SCP-Dateien auf den Server zu übertragen, sich aber nicht wirklich anzumelden. Informationen und Quellcode-Downloads für die Software sind hier verfügbar und die vorkompilierten RPM-Pakete sind über verfügbar EPEL YUM-Repositories.
Nach der Installation müssen Sie jedes Benutzerkonto, auf das Sie den Zugriff beschränken möchten, konfigurieren, um die neu installierte eingeschränkte Shell zu verwenden. Sie können dies manuell über /etc/passwd tun oder den folgenden Befehl verwenden:usermod -s /usr/bin/scponly USERNAME