GNU/Linux >> Linux Esercitazione >  >> Linux

accesso solo tunneling ssh

Soluzione 1:

Sì, basta usare /bin/false come shell e istruire l'utente ad avviare il processo di tunneling SSH senza eseguire alcun comando remoto (ad esempio il -N flag per OpenSSH):

ssh -N -L 1234:target-host:5678 ssh-host

Soluzione 2:

Nel file .ssh/authorized_keys dell'utente, inserire qualcosa di simile al seguente:

permitopen="192.168.1.10:3306",permitopen="10.0.0.16:80",no-pty ssh-rsa AAAAB3N...

Quindi, in pratica, i controlli sarebbero davanti alla chiave pubblica ssh dell'utente separati da uno spazio. Nell'esempio, le connessioni che utilizzano la chiave pubblica specifica potranno eseguire il port forwarding SSH solo al server MySQL di 192.168.1.10 e al server Web di 10.0.0.16 e non verrà assegnata una shell (no-pty). Stai specificatamente chiedendo dell'opzione "no-pty", ma anche le altre potrebbero essere utili se l'utente deve eseguire il tunneling solo verso server specifici.

Guarda la pagina man di sshd per ulteriori opzioni per il file authorized_keys.

Si noti che l'esperienza dell'utente può sembrare un po' strana:quando accede con ssh, sembrerà che la sessione sia sospesa (poiché non riceve un pty). Va bene. Se l'utente ha specificato il port forwarding con, ad esempio, "-L3306:192.168.1.10:3306", il port forwarding sarà ancora attivo.

In ogni caso, provalo.

Soluzione 3:

Dai all'utente una shell che gli consenta solo di disconnettersi come /bin/press_to_exit.sh

#!/bin/bash
read -n 1 -p "Press any key to exit" key

In questo modo può rimanere connesso quanto vuole, con i tunnel attivi, ma non eseguire alcun comando. Ctrl-c chiude la connessione.

Soluzione 4:

Assegna una shell che non consenta all'utente di accedere.

ad esempio

#!/bin/sh
echo "No interactive login available."
sleep 60
exit 0

impedirebbe loro di ottenere un prompt della shell e darebbe loro un timeout di 60 secondi - se non c'è alcuna connessione attiva per 60 secondi, uscirà e quindi li disconnetterà completamente (aumentare il numero in base ai requisiti).

Non possono nemmeno eseguire un comando remoto, perché quella shell non glielo permette.


Linux
  1. Ssh:aggiungere un utente che può eseguire solo script in remoto?

  2. Come creare un utente SFTP senza accesso alla shell su CentOS 8

  3. Disabilita l'accesso root diretto e l'accesso utente tramite SSH al server

  4. Come dare accesso ssh a un utente in Ubuntu

  5. Riavvia SSH su una macchina in cui SSH è l'unica modalità di accesso

Come limitare l'accesso dell'utente al sistema Linux

Come consentire o negare l'accesso SSH a un particolare utente o gruppo in Linux

Come limitare l'accesso SSH a determinati utenti in Linux

Come creare un utente solo SFTP in Debian 11

Come limitare l'accesso a un solo utente tramite PAM in Linux

Come limitare un utente SSH a consentire solo il tunneling SSH?