Differenze tra ssh da -L a -D


52

Sto cercando di capire le differenze tra ssh da -L a -D. C'è qualcos'altro tranne che -D è solo SOCKS?

Grazie!

Risposte:


53

ssh -Lapre una porta locale. Tutto ciò che si invia a quella porta viene messo attraverso la connessione SSH e lascia attraverso il server. Se lo fai, ad esempio, ssh -L 4444:google.com:80se apri http://localhost:4444sul tuo browser, vedrai effettivamente la pagina di Google.

ssh -Dapre una porta locale, ma non ha un endpoint specifico come con -L. Invece, finge di essere un proxy SOCKS. Se apri, ad esempio, ssh -D 7777quando dici al tuo browser di usare localhost:7777come proxy SOCKS, tutto ciò che il tuo browser richiede passa attraverso il tunnel ssh. Su Internet pubblico, è come se stessi navigando dal tuo server SSH invece che dal tuo computer.


6
Un dettaglio importante di -L è che puoi associare una porta locale solo per uso locale, ad esempio localhost: 80: remotehost: 8080, ma puoi anche associare quella porta a chiunque altro. Quindi puoi fare in modo che una macchina nella tua rete locale offra l'accesso a una macchina remota attraverso un tunnel, senza che nessuna delle macchine locali ne sia a conoscenza.
dividebyzero,

@dividebyzero Non riesco a immaginare cosa stai descrivendo
Michael Dorst,

@MichaelDorst Intendo questa frase dalla manpage:The bind_address of “localhost” indicates that the listening port be bound for local use only, while an empty address or ‘*’ indicates that the port should be available from all interfaces.
dividebyzero il

ssh -L 4444:google.com:80non funziona per me, richiede un altro parametro per l'accesso, come user@example.com
Saman Mohamadi,

6

In SSH, -Dspecifica un port forwarding "dinamico" locale a livello di applicazione.

SSH -D [bind_address:]port

Specifica un port forwarding "dinamico" locale a livello di applicazione. Funziona assegnando un socket per ascoltare la porta sul lato locale, eventualmente associato al bind_address specificato. Ogni volta che viene stabilita una connessione a questa porta, la connessione viene inoltrata sul canale protetto e viene quindi utilizzato il protocollo dell'applicazione per determinare a quale connessione connettersi dalla macchina remota. Attualmente sono supportati i protocolli SOCKS4 e SOCKS5 e ssh fungerà da server SOCKS. Solo root può inoltrare porte privilegiate. Il port forwarding dinamico può anche essere specificato nel file di configurazione.

Gli indirizzi IPv6 possono essere specificati con una sintassi alternativa: porta [bind_address /] o racchiudendo l'indirizzo tra parentesi quadre.

Solo il superutente può inoltrare porte privilegiate. Per impostazione predefinita, la porta locale è associata in base all'impostazione GatewayPorts. Tuttavia, è possibile utilizzare un indirizzo_indirizzamento esplicito per associare la connessione a un indirizzo specifico. Il bind_address di "localhost" indica che la porta di ascolto deve essere associata solo per uso locale, mentre un indirizzo vuoto o '*' indica che la porta dovrebbe essere disponibile da tutte le interfacce.

Inoltre, ssh -Lspecifica che la porta specificata sull'host locale (client) deve essere inoltrata all'host e alla porta dati sul lato remoto.

SSH -L [bind_address:]port:host:hostport

Specifica che la porta specificata sull'host locale (client) deve essere inoltrata all'host e alla porta dati sul lato remoto. Funziona assegnando un socket per ascoltare la porta sul lato locale, eventualmente associato al bind_address specificato. Ogni volta che viene stabilita una connessione a questa porta, la connessione viene inoltrata sul canale protetto e viene stabilita una connessione per ospitare l'hostport della porta dalla macchina remota. Il port forwarding può anche essere specificato nel file di configurazione. Gli indirizzi IPv6 possono essere specificati con una sintassi alternativa: [bind_address /] port / host / hostport o racchiudendo l'indirizzo tra parentesi quadre.

Solo il superutente può inoltrare porte privilegiate. Per impostazione predefinita, la porta locale è associata in base all'impostazione GatewayPorts. Tuttavia, è possibile utilizzare un indirizzo_indirizzamento esplicito per associare la connessione a un indirizzo specifico. Il bind_address di "localhost" indica che la porta di ascolto deve essere associata solo per uso locale, mentre un indirizzo vuoto o '*' indica che la porta dovrebbe essere disponibile da tutte le interfacce.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.