
Demone di connessione SSH per Debian/Raspbian/Ubuntu/etc
sidedoor mantiene una connessione SSH o un tunnel con un demone di script shell.
Il caso d'uso principale è mantenere un forward di porta remoto verso il server SSH locale (o un'altra porta). In questo modo, il dispositivo locale può essere raggiunto senza utilizzare connessioni in entrata che potrebbero essere bloccate da un NAT o firewall, o comunque poco pratiche con dispositivi mobili.
I client SSH possono connettersi al dispositivo tramite il proxy SSH inverso a cui sidedoor crea il tunnel. Questo server proxy può essere non fidato e gestito da terze parti o da un servizio cloud.
sidedoor abilita i keepalive SSH e riprova la connessione SSH con backoff esponenziale. Per riconnettersi il prima possibile, azzera il backoff quando un'interfaccia di rete viene attivata (o modificata).
Altri casi d'uso:
Stai usando sidedoor? Segnalazioni di bug, richieste di funzionalità - per favore apri una issue! Le pull request sono benvenute.
sidedoor è pacchettizzato per Debian e sistemi basati su Debian come Raspbian, Ubuntu e VyOS/EdgeOS, ma dovrebbe funzionare in qualsiasi ambiente POSIX con un client SSH (OpenSSH).
Se sidedoor è nei repository della tua distribuzione (Debian 9+, Ubuntu 17.04+), installalo semplicemente con il tuo gestore pacchetti.
sudo apt install sidedoor
Altrimenti, puoi scaricare manualmente i deb dalla pagina delle release.
Per concedere all'utente sidedoor accesso root completo,
installa il pacchetto sidedoor-sudo.
Il server remoto e i forward di porta sono configurati in /etc/default/sidedoor.
I file di configurazione SSH si trovano nella directory /etc/sidedoor.
Configura REMOTE_SERVER e OPTIONS in /etc/default/sidedoor.
Per alcuni argomenti da passare in OPTIONS, vedi il post del blog
Forward di porta locale e remoto spiegati con esempi
e la pagina man di ssh.
Modifica i file di configurazione SSH in /etc/sidedoor.
id_rsa: chiave privata SSH per accedere al server remoto.
Puoi usare ssh-keygen per creare questa chiave
(premi y quando richiesto per sovrascrivere il file esistente):
sudo ssh-keygen -t rsa -N '' -f /etc/sidedoor/id_rsa
La corrispondente chiave pubblica id_rsa.pub dovrà essere inclusa nel
file ~/.ssh/authorized_keys dell'utente remoto.
/etc/ssh/sshd_config.
ChallengeResponseAuthentication no e PasswordAuthentication no).ListenAddress ::1 e ListenAddress 127.0.0.1).sshd, es.,
sudo service ssh reload.ssh_client_config_example e includilo nel file ~/.ssh/config
di un client per accedere facilmente al server SSH in tunnel
con ssh, scp, rsync, ecc.sidedoor è pensato come una soluzione leggera per il tunneling di porte con dipendenze minime, ma esistono alcune alternative con più funzionalità.
Tor fornisce anonimato ai server gestiti come servizi nascosti, ma gestisce anche il traversal NAT.
Vantaggi:
Svantaggi:
Sia sul dispositivo che sui client, installa Tor.
sudo apt install tor
Sul dispositivo che viene esposto, modifica /etc/tor/torrc
per creare un servizio nascosto sulla porta 22.
HiddenServiceDir /var/lib/tor/sshd/
HiddenServicePort 22 127.0.0.1:22
HiddenServiceAuthorizeClient stealth client
Sostituisci "client" con un elenco separato da virgole di nomi client per generare più segreti di autorizzazione.
Quindi ricarica Tor e ottieni il nome host onion e i dati di autorizzazione.
sudo service tor reload
sudo cat /var/lib/tor/sshd/hostname
Sui client, modifica /etc/tor/torrc
per aggiungere il nome host onion e i dati di autorizzazione visti nel file hostname.
HidServAuth <hostname>.onion <secret>
Quindi ricarica Tor ed esegui torsocks ssh <hostname>.onion o imposta ProxyCommand
nel file ~/.ssh/config.
ProxyCommand torsocks nc <hostname>.onion 22
autossh, come sidedoor,
avvia ssh e lo riavvia secondo necessità.
Alcune differenze includono:
sidedoor è un demone di script shell minimalista. autossh è un programma C più esteso e configurabile.
sidedoor abilita i keepalive SSH
(ServerAliveInterval e ServerAliveCountMax),
disponibili nelle versioni moderne di OpenSSH.
autossh monitora ssh inviando dati attraverso
un ciclo di forward di porta (questa funzionalità è precedente ai keepalive SSH),
sebbene possa essere disabilitata con l'opzione -M 0.
sidedoor è pensato per essere eseguito automaticamente come servizio, quindi il pacchetto include script init/systemd e file di configurazione. autossh non include uno script init/systemd (bug Debian #698390).
sidedoor disabilita i comandi remoti e l'allocazione di pseudo-tty. Per uso interattivo, considera autossh con keepalive SSH o Mosh.
sidedoor riprova sempre se ssh termina con uno stato di uscita diverso da zero.
autossh non riprova se ssh termina troppo rapidamente al primo tentativo,
cosa che può accadere quando la connettività di rete o la risoluzione DNS
sono interrotte, specialmente su dispositivi mobili.
Sia sidedoor che autossh hanno una logica di backoff per i tentativi.
sidedoor azzera il backoff dei tentativi quando un'interfaccia di rete viene attivata,
per tentare di riconnettersi il prima possibile, ricevendo SIGUSR1
da uno script if-up.d. autossh non ha hook sullo stato della rete.
Copyright 2015-2017 Dara Adib.
Questo programma è software libero: puoi ridistribuirlo e/o modificarlo secondo i termini della GNU General Public License come pubblicata dalla Free Software Foundation, sia la versione 3 della Licenza, o (a tua scelta) qualsiasi versione successiva.
Questo programma è distribuito nella speranza che sia utile, ma SENZA ALCUNA GARANZIA; senza nemmeno la garanzia implicita di COMMERCIABILITÀ o IDONEITÀ PER UN PARTICOLARE SCOPO. Vedi la GNU General Public License per maggiori dettagli.
Dovresti aver ricevuto una copia della GNU General Public License insieme a questo programma. In caso contrario, vedi https://www.gnu.org/licenses/.
known_hosts: chiave host SSH del server remoto.
Opzionalmente, concedi accesso remoto all'utente locale sidedoor aggiungendo
una o più chiavi pubbliche SSH al file /etc/sidedoor/authorized_keys.
/etc/sidedoor/authorized_keys è un link simbolico a
~sidedoor/.ssh/authorized_keys.
Il pacchetto sidedoor-sudo, se installato, fornisce accesso root completo
a questo utente.
Riavvia il servizio sidedoor per applicare le modifiche.
sudo service sidedoor restart