J'utilise beaucoup de tunnels SSH vers différents serveurs sur ma machine Linux (pour la tunnelisation de bases de données, de serveurs Web, etc.) et il serait très pratique d'afficher une liste des tunnels ouverts en cours via un script shell.
Je peux identifier les connexions locales via un grep sur netstat du type:
netstat -n --protocol inet | grep ':22'
mais cela ne me montrera pas le port distant auquel elle est connectée (et inclut évidemment les connexions SSH standard non tunnellées)
UPDATE : Les réponses sont correctes mais ne me montrent pas le port distant auquel je suis connecté. Par exemple, j'ai souvent un tunnel menant à mysql, disons localhost: 3308 en correspondance avec: 3306 sur le serveur. Normalement, je peux deviner par les ports locaux que j'ai choisis, mais ce serait bien d'avoir accès aux deux.
Des idées?
la source
Réponses:
si vous voulez seulement lister les tunnels créés par
ssh
:(ce serait un -L 9090: localhost: 80 tunnel)
si vous voulez voir les tunnels / connexions faites à un
sshd
:le démon ssh écoute sur le port 22 (dernière ligne), 2 sous-processus sont générés (les 2 premières lignes, login de 'utilisateur'), un tunnel -R créé sur le port 5000 et un tunnel -L qui transfère un port de my ( local) machine à localhost: 80 (www).
la source
Essayez cette commande, elle pourrait être utile:
la source
pas exactement la solution à votre problème, mais aussi pratique parfois:
Depuis une session SSH:
vous montre une liste de toutes les connexions ouvertes sur vos tunnels pour cette session.
la source
EDIT: exemple pour le commentaire @akira:
Ce qui peut être lu comme suit: SSH (pas SSHd) écoute le port TCP local 1443.
la source
-p
ne montre que vos propres processus (tous les processus par root). En outre, cette commande montresshd
aussi.-l
-R
tunnels s’ils ne sont pas utilisés. Mais bon, si vous les utilisez, vous pouvez les attraper sans les-l
Ceci est le meilleur résultat de Google pour cette question, je vais donc mettre ma réponse ici. Je suis resté éveillé toute la nuit à filtrer les résultats et à proposer une longue commande complexe qui vous montre uniquement vos tunnels ssh inversés dans ce format:
publicipaddress: remoteforwardedport
Voici le code. J'utilise Ubuntu Server 12. J'utilise des tunnels SSH inversés qui transmettent le port local 5900 à mon serveur SSH public, et cette commande astucieuse affiche toutes mes adresses IP publiques avec le port distant.
la source
Exemple de sortie:
la source
la source
la source
Comme je n'aime pas lsof, je suggère une méthode alternative (un autre gars m'a appris :)):
$ netstat -l | grep ssh
De cette façon, vous montrez que les tunnels SSH créés par
ssh
sont ouverts en mode LISTEN (et sont omis par défaut parnetstat
).la source