GNU/Linux >> Znalost Linux >  >> Linux

Povolit SCP, ale ne skutečné přihlášení pomocí SSH

Řešení 1:

rssh shell (http://pizzashack.org/rssh/) je navržen přesně pro tento účel.

Protože RHEL/CentOS 5.2 neobsahuje balíček pro rssh, můžete se podívat sem a získat RPM:http://dag.wieers.com/rpm/packages/rssh/

Chcete-li jej použít, nastavte jej jako shell pro nového uživatele takto:

useradd -m -d /home/scpuser1 -s /usr/bin/rssh scpuser1
passwd scpuser1

..nebo změňte shell za existující takto:

chsh -s /usr/bin/rssh scpuser1

..a upravte /etc/rssh.conf pro konfiguraci rssh shell - zejména odkomentování allowscp řádek pro povolení přístupu SCP pro všechny uživatele rssh.

(Možná také budete chtít použít chroot k udržení uživatelů v jejich domovech, ale to je jiný příběh.)

Řešení 2:

Jsem na to pozdě, ale můžete použít klíče ssh a zadat přesný příkaz povolený v jejich souboru ~/.ssh/authorized_keys, např.

no-port-forwarding,no-pty,command="scp source target" ssh-dss ...

Možná budete muset použít ps to na cíli, abyste nastavili správné nastavení příkazu.

PS:Pokud spustíte příkaz test scp s "-v", můžete vidět něco takového

debug1: Sending command: scp -v -t myfile.txt

Všimněte si, že "-t" je nezdokumentovaná volba scp, kterou program používá na druhém konci. To vám dává představu o tom, co musíte vložit do autorizovaných klíčů.

UPRAVIT: Více informací (s několika odkazy) můžete najít v této otázce StackOverflow.

Zde je funkční příklad pro uživatele jménem backup_user na straně serveru.

~backup_user/.ssh/authorized_keys obsah na straně serveru (s některými dalšími bezpečnostními omezeními):

no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="scp -v -r -d -t ~/CONTENT" ssh-rsa AAAAMYRSAKEY...

Vytvořte odkaz v ~backup_user/, který odkazuje na adresář, kde by měl být obsah přístupný.

$ ln -s /path/to/directory/with/accessible/content ~backup_user/CONTENT

Nyní by měl ze strany klienta fungovat následující příkaz:

scp -v  -r  -P 2222 -i .ssh/id_rsa_key_file path/to/data [email protected]:~/CONTENT

Co tento příkaz dělá:

  • Zobrazuje podrobné informace (volitelné :můžete odstranit -v ze souboru příkazů i autorizovaných_klíčů)
  • Rekurzivně kopíruje obsah cesty/k/datům. (volitelné :můžete odstranit -r z příkazového i autorizovaného souboru, pokud nechcete vytvářet rekurzivní kopii)
  • Pro připojení k serveru používá port 2222 (volitelné :můžete odstranit -P 2222 z příkazu)
  • K automatizaci připojení používá a soubor identity (volitelné :můžete odstranit -i .ssh/id_rsa_key_file
  • Obsah path/to/data bude zkopírován do /path/to/directory/with/accessible/content/

Chcete-li vytvořit kopii souboru (nebo několika) ze serveru na klienta, měli byste vytvořit skript shellu, který to zpracuje, jak je popsáno zde

Řešení 3:

Na večírek jdu trochu pozdě, ale navrhuji, abyste se podívali na ForceCommand direktiva OpenSSH.

Subsystem sftp internal-sftp

Match group sftponly
         ForceCommand internal-sftp

Je pravda, že toto je SFTP a ne SCP, ale dosahuje stejného cíle, bezpečněji než s omezeným shellem. Kromě toho můžete uživatele chrootovat, pokud chcete.

Řešení 4:

K tomu používám MySecureShell. Můžete nakonfigurovat i další omezení.

https://github.com/mysecureshell/mysecureshell

Omezuje připojení pouze na SFTP/SCP. Žádný přístup k shellu.

Řešení 5:

Doporučuji použít scponly.

Jedná se o omezený shell, který uživatelům umožňuje dělat přesně to, co zní, soubory SCP na server, ale ve skutečnosti se nepřihlašovat. Informace a zdrojové kódy ke stažení pro software jsou k dispozici zde a předkompilované balíčky RPM jsou dostupné prostřednictvím EPEL YUM úložiště.

Po instalaci budete muset nakonfigurovat každý uživatelský účet, ke kterému chcete omezit přístup, aby používal nově nainstalovaný omezený shell. Můžete to udělat ručně přes /etc/passwd nebo použít následující příkaz:usermod -s /usr/bin/scponly USERNAME


Linux
  1. Ssh – Jak urychlit příliš pomalé přihlašování Ssh?

  2. Příkaz nebyl nalezen v Zsh, ale nalezen v Bash?

  3. 10 Praktické příklady použití příkazu scp

  1. Jak obnovit databázi MySQL pomocí příkazu v SSH?

  2. Změna výchozího prostředí v Linuxu

  3. Použití scp s předávaným ssh agentem

  1. Ssh – Omezení uživatele Ssh/scp/sftp na adresář?

  2. Použití kláves Vi k úpravě příkazů Shell v Unixu?

  3. linuxový příkaz nalezen, ale nebyl nalezen při použití sudo