Abbiamo un server pubblico che accetta connessioni SSH da più client dietro i firewall.
Ognuno di questi client crea un tunnel SSH inverso usando il ssh -R
comando dai propri server Web sulla porta 80 al nostro server pubblico.
La porta di destinazione (sul lato client) del tunnel SSH inverso è 80 e la porta di origine (sul lato del server pubblico) dipende dall'utente. Stiamo programmando di mantenere una mappa degli indirizzi delle porte per ciascun utente.
Ad esempio, il client A eseguirà il tunneling del proprio server Web dalla porta 80 alla nostra porta 8000; client B da 80 a 8001; client C da 80 a 8002.
Client A: ssh -R 8000:internal.webserver:80 clienta@publicserver
Client B: ssh -R 8001:internal.webserver:80 clientb@publicserver
Client C: ssh -R 8002:internal.webserver:80 clientc@publicserver
Fondamentalmente, ciò che stiamo cercando di fare è associare ogni utente con una porta e non consentire loro di passare ad altre porte.
Se stessimo utilizzando la funzione di tunneling in avanti di SSH ssh -L
, potremmo consentire a quale porta eseguire il tunneling utilizzando la permitopen=host:port
configurazione. Tuttavia, non esiste un equivalente per il tunnel SSH inverso.
Esiste un modo per limitare le porte di tunneling inverso per utente?