Ho due macchine, client e server.
Il client (che si trova dietro un firewall aziendale) apre un tunnel SSH inverso al server, che ha un indirizzo IP accessibile pubblicamente, usando questo comando:
ssh -nNT -R0: localhost: 2222 insecure@server.example.com
In OpenSSH 5.3+, ciò che si 0
verifica subito dopo il -R
mezzo "seleziona una porta disponibile" anziché chiamarne esplicitamente una. Il motivo per cui lo sto facendo è perché non voglio scegliere una porta che è già in uso. In verità, in realtà ci sono molti clienti là fuori che hanno bisogno di impostare tunnel simili.
Il problema a questo punto è che il server non sa quale client è quale. Se vogliamo riconnetterci a uno di questi client (tramite localhost), come facciamo a sapere quale porta si riferisce a quale client?
Sono consapevole che ssh riporta il numero di porta alla riga di comando quando utilizzato nel modo sopra. Tuttavia, mi piacerebbe anche usare l'autossh per mantenere vive le sessioni. autossh esegue il suo processo figlio tramite fork / exec, presumibilmente, in modo che l'output del comando ssh effettivo venga perso nell'etere.
Inoltre, non riesco a pensare a nessun altro modo per ottenere la porta remota dal client. Pertanto, mi chiedo se esiste un modo per determinare questa porta sul server.
Un'idea che ho è quella di usare in qualche modo / etc / sshrc, che è presumibilmente uno script che viene eseguito per ogni connessione. Tuttavia, non so come si ottengano qui le informazioni pertinenti (forse il PID del particolare processo sshd che gestisce tale connessione?) Mi piacerebbe alcuni suggerimenti.
Grazie!