
Daemon de connexion SSH pour Debian/Raspbian/Ubuntu/etc
sidedoor maintient une connexion SSH ou un tunnel avec un démon de script shell.
Le cas d'utilisation principal est le maintien d'un transfert de port distant vers le serveur SSH local (ou un autre port). Ainsi, l'appareil local peut être accessible sans utiliser de connexions entrantes qui pourraient être bloquées par un NAT ou un pare-feu, ou autrement peu pratiques avec des appareils mobiles.
Les clients SSH peuvent se connecter à l'appareil via le proxy SSH inverse vers lequel sidedoor tunnelise. Ce serveur proxy peut être non fiable et géré par un tiers ou un service cloud.
sidedoor active les keepalives SSH et réessaie SSH avec un backoff exponentiel. Afin de se reconnecter dès que possible, il réinitialise le backoff lorsqu'une interface réseau est activée (ou modifiée).
Autres cas d'utilisation :
Utilisez-vous sidedoor ? Rapports de bugs, demandes de fonctionnalités - veuillez ouvrir une issue ! Les pull requests sont les bienvenues.
sidedoor est empaqueté pour Debian et les systèmes basés sur Debian comme Raspbian, Ubuntu et VyOS/EdgeOS, mais devrait fonctionner dans tout environnement POSIX avec un client SSH (OpenSSH).
Si sidedoor se trouve dans vos dépôts de distribution (Debian 9+, Ubuntu 17.04+), installez-le simplement avec votre gestionnaire de paquets.
sudo apt install sidedoor
Sinon, vous pouvez télécharger manuellement les debs depuis la page des Releases.
Pour accorder à l'utilisateur sidedoor un accès root complet, installez le paquet sidedoor-sudo.
Le serveur distant et les transferts de ports sont configurés dans /etc/default/sidedoor. Les fichiers de configuration SSH se trouvent dans le répertoire /etc/sidedoor.
Configurez REMOTE_SERVER et OPTIONS dans /etc/default/sidedoor. Pour certains arguments à passer dans OPTIONS, consultez l'article de blog Local and Remote Port Forwarding Explained With Examples et la page de manuel ssh.
Modifiez les fichiers de configuration SSH dans /etc/sidedoor.
id_rsa : Clé privée SSH pour accéder au serveur distant. Vous pouvez utiliser ssh-keygen pour créer cette clé (appuyez sur y lorsqu'il vous est demandé d'écraser le fichier existant) :
sudo ssh-keygen -t rsa -N '' -f /etc/sidedoor/id_rsa
La clé publique correspondante id_rsa.pub devra être incluse dans le fichier ~/.ssh/authorized_keys de l'utilisateur distant.
/etc/ssh/sshd_config.
ChallengeResponseAuthentication no et PasswordAuthentication no).ListenAddress ::1 et ListenAddress 127.0.0.1).sshd, par exemple sudo service ssh reload.ssh_client_config_example et incluez-le dans le fichier ~/.ssh/config d'un client pour accéder facilement au serveur SSH tunnelisé avec ssh, scp, rsync, etc.sidedoor est conçu comme une solution légère pour tunneliser des ports avec un minimum de dépendances, mais il existe quelques alternatives avec plus de fonctionnalités.
Tor fournit l'anonymat aux serveurs fonctionnant en tant que services cachés, mais gère également la traversée NAT.
Avantages :
Inconvénients :
Sur l'appareil et les clients, installez Tor.
sudo apt install tor
Sur l'appareil qui est exposé, modifiez /etc/tor/torrc pour créer un service caché sur le port 22.
HiddenServiceDir /var/lib/tor/sshd/
HiddenServicePort 22 127.0.0.1:22
HiddenServiceAuthorizeClient stealth client
Remplacez "client" par une liste de noms de clients séparés par des virgules pour générer plusieurs secrets d'autorisation.
Rechargez ensuite Tor et obtenez le nom d'hôte onion et les données d'autorisation.
sudo service tor reload
sudo cat /var/lib/tor/sshd/hostname
Sur les clients, modifiez /etc/tor/torrc pour ajouter le nom d'hôte onion et les données d'autorisation vues dans le fichier hostname.
HidServAuth <hostname>.onion <secret>
Rechargez ensuite Tor et exécutez torsocks ssh <hostname>.onion ou définissez ProxyCommand dans le fichier ~/.ssh/config.
ProxyCommand torsocks nc <hostname>.onion 22
autossh, comme sidedoor, lance ssh et le redémarre si nécessaire.
Quelques différences incluent :
sidedoor est un démon de script shell minimaliste. autossh est un programme C plus complet et configurable.
sidedoor active les keepalives SSH (ServerAliveInterval et ServerAliveCountMax), qui sont disponibles dans les versions modernes d'OpenSSH. autossh surveille ssh en envoyant des données via une boucle de transferts de ports (cette fonctionnalité est antérieure aux keepalives SSH), bien que cela puisse être désactivé avec l'option -M 0.
sidedoor est destiné à s'exécuter automatiquement en tant que service, donc le paquet inclut des scripts init/systemd et des fichiers de configuration. autossh n'inclut pas de script init/systemd (bogue Debian #698390).
sidedoor désactive les commandes distantes et l'allocation de pseudo-tty. Pour une utilisation interactive, envisagez autossh avec les keepalives SSH ou Mosh.
sidedoor réessaie toujours si ssh se termine avec un statut de sortie non nul. autossh ne réessaie pas si ssh se termine trop rapidement lors de la première tentative, ce qui peut se produire lorsque la connectivité réseau ou la résolution DNS est défaillante, en particulier sur les appareils mobiles. sidedoor et autossh ont tous deux une logique de backoff de réessai.
sidedoor réinitialise le backoff de réessai lorsqu'une interface réseau est activée, pour tenter de se reconnecter dès que possible, en recevant SIGUSR1 d'un script if-up.d. autossh n'a pas de hooks d'état réseau.
Copyright 2015-2017 Dara Adib.
Ce programme est un logiciel libre : vous pouvez le redistribuer et/ou le modifier selon les termes de la licence publique générale GNU telle que publiée par la Free Software Foundation, soit la version 3 de la licence, soit (à votre choix) toute version ultérieure.
Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE ; sans même la garantie implicite de QUALITÉ MARCHANDE ou d'ADAPTATION À UN USAGE PARTICULIER. Voir la licence publique générale GNU pour plus de détails.
Vous devriez avoir reçu une copie de la licence publique générale GNU avec ce programme. Sinon, consultez https://www.gnu.org/licenses/.
known_hosts : Clé d'hôte SSH du serveur distant.
Optionnellement, accordez un accès distant à l'utilisateur local sidedoor en ajoutant la ou les clés publiques SSH au fichier /etc/sidedoor/authorized_keys. /etc/sidedoor/authorized_keys est un lien symbolique vers ~sidedoor/.ssh/authorized_keys. Le paquet sidedoor-sudo, s'il est installé, fournit un accès root complet à cet utilisateur.
Redémarrez le service sidedoor pour appliquer les modifications.
sudo service sidedoor restart