J'ai deux machines, Client et Serveur.
Le client (qui se trouve derrière un pare-feu d'entreprise) ouvre un tunnel SSH inversé vers le serveur, qui a une adresse IP accessible au public, à l'aide de cette commande:
ssh -nNT -R0: localhost: 2222 insecure@server.example.com
Dans OpenSSH 5.3+, le fait de 0
se produire juste après le -R
moyen signifie "choisir un port disponible" plutôt que d'en appeler explicitement un. La raison pour laquelle je fais cela est parce que je ne veux pas choisir un port déjà utilisé. En vérité, il existe en fait de nombreux clients qui doivent configurer des tunnels similaires.
Le problème à ce stade est que le serveur ne sait pas quel client est lequel. Si nous voulons nous reconnecter à l'un de ces clients (via localhost), alors comment savoir quel port fait référence à quel client?
Je suis conscient que ssh signale le numéro de port à la ligne de commande lorsqu'il est utilisé de la manière ci-dessus. Cependant, j'aimerais également utiliser autossh pour maintenir les sessions en vie. autossh exécute son processus enfant via fork / exec, probablement, de sorte que la sortie de la commande ssh réelle est perdue dans l'éther.
De plus, je ne vois pas d'autre moyen d'obtenir le port distant du client. Ainsi, je me demande s'il existe un moyen de déterminer ce port sur le serveur.
Une idée que j'ai est d'utiliser en quelque sorte / etc / sshrc, qui est censé être un script qui s'exécute pour chaque connexion. Cependant, je ne sais pas comment obtenir les informations pertinentes ici (peut-être le PID du processus sshd particulier gérant cette connexion?) J'adorerais quelques pointeurs.
Merci!