GNU/Linux >> LINUX-Kenntnisse >  >> Linux

SCP zulassen, aber keine tatsächliche Anmeldung mit SSH

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


Linux
  1. Verwenden von Vi-Tasten zum Bearbeiten von Shell-Befehlen in Unix?

  2. Ausführen eines Remote-Befehls über eine SSH-Verbindung vor der Anmeldung?

  3. Befehl nicht in Zsh, aber in Bash gefunden?

  4. Wie kann ich die MySQL-Datenbank mit dem Befehl in SSH wiederherstellen?

  5. Ändern der Standard-Shell in Linux

Verwenden von Secure Shell (SSH) für die Anmeldung und Secure Copy (SCP) für die Datenübertragung unter Linux

10 praktische Beispiele für die Verwendung des scp-Befehls

Beschränken Sie die SSH-Anmeldung auf eine bestimmte IP oder einen bestimmten Host

Befehl bei Verwendung von sudo nicht gefunden

`ssh <host>` ist eine Login-Shell, aber `ssh <host> <command>` nicht?

SFTP zulassen, aber SSH nicht zulassen?