web-dev-qa-db-fra.com

ports autossh transférés laissés ouverts en cas d'échec de la connexion

J'essaie d'établir un tunnel SSH inversé à partir de mon réseau domestique. Je l'ai pour que autossh se connecte avec succès une fois (et une seule fois) par redémarrage. Je transfère les ports distants vers mon ordinateur local afin que je puisse me connecter même lorsque vous n'êtes pas à la maison. Je suis sur Internet par satellite et derrière un double pare-feu NAT, la connexion directe à mon réseau domestique est donc inutile.

Il semble que les ports de la machine distante restent ouverts lorsque la connexion ssh est interrompue pour la première fois. Toute tentative ultérieure de reconnexion échoue car les ports sont déjà utilisés. Je ne peux pas redémarrer les choses avant d'avoir redémarré le serveur, ce qui est loin d'être idéal.

N'ayant aucune chance avec Google ni les recherches sur les forums, j'espère que quelqu'un ici pourra me diriger dans la bonne direction.

J'ai configuré le serveur et la machine locale en suivant les instructions ci-dessous:

http://linuxaria.com/howto/permanent-ssh-tunnels-with-autossh

Mon script de connexion est extrait ci-dessous et inclus dans /etc/rc.local:

su -s /bin/sh autossh -c 'autossh -M 20000 -f -i /home/autossh/.ssh/id_rsa -N -R 99999:localhost:22 [email protected]'

Bravo et merci d'avance pour toute aide!

Corey

2
corey_s

D'accord ... Solution partielle, même si je ne suis toujours pas sûr que ce soit complètement résolu. J'ai apporté les modifications suivantes et les choses sont toujours connectées la nuit. Je ne suis pas sûr s'il parviendra à se reconnecter une fois la session terminée, cependant.

  1. Ajout des lignes suivantes sur le serveur distant sshd_config:

    ClientAliveInterval 600
    ClientAliveCountMax 12
    
  2. Modification du script rc.local pour lancer autossh comme suit (ajout des options ServerAliveInterval et ServerAliveCountMax):

    su -s /bin/sh autossh -c 'autossh -M 20000 -f -i /home/autossh/.ssh/id_rsa -o "ServerAliveInterval 120" -o "ServerAliveCountMax 5" -N -R 99999:localhost:22 [email protected]'
    

J'ai également constaté que la connexion à l'aide de GatewayPort n'était pas fiable. Au lieu de:

user@machine1 $ ssh -p 99999 remotehost.com

Je me connecte directement à l'hôte distant, puis je me connecte au port 99999 sur localhost, entre autres:

user@machine1 $ ssh remotehost.com
user@remotehost $ ssh -p 99999 localhost

Cela semble être plus fiable. Le port de passerelle a tendance à se bloquer. Mais si je me connecte en deux étapes comme ci-dessus, je suis toujours en train de passer. Publierai de nouveau des mises à jour une fois que je pourrai voir s'il se reconnecte après une session.

Espérons que cela pourrait aider les autres!

Corey

1
corey_s