ssh -D
puede hacer un puerto de calcetines en la máquina local, que pasa el tráfico al control remoto y luego a otros lugares.
ssh -L port:host:hostport
, escuche el puerto en la máquina local, pase el tráfico a "host: hostport" desde el punto de vista de la máquina remota.
ssh -R port:host:hostport
es la contraparte de ssh -L
, que escucha el puerto en la máquina remota, y pasa el tráfico a "host: hostport" desde el punto de vista de la máquina local.
Pero, ¿cuál es la contrapartida de ssh -D
, es decir, cómo abrir un puerto de calcetines en una máquina remota, que pasará el tráfico al local y luego a otros lugares?
networking
ssh
tunnel
ssh-tunnel
socks
Baya
fuente
fuente
Respuestas:
Con
-D
&-L
tiene una manera de comunicarse de cualquier manera entre las dos máquinas.Asi que...
-R
para crear un puerto de escucha en la máquina remota que apunte al sshd de la máquina local.-D
en la máquina remota, apuntando al puerto que creó anteriormente."Creo" que completar el siguiente hará que funcione ...
ssh remotehost -R remoteport:localhost:localport "ssh -D 9050 localhost -p remoteport"
'
remotehost
', 'remoteport
' & 'localport
' en lo anterior necesitan ser cambiados. Se formará un proxy de calcetines en 9050.fuente
Se puede lograr de forma transparente con este fragmento en ~ / .ssh / config:
Detalles
Queremos un DynamicForward inverso. Esto se logra usando dos comandos ssh:
ssh -D 3128 localhost
ssh -R 3128:localhost:3128 target
De esta manera, el objetivo tiene un túnel SOCKS para el cliente SSH.
Lo que hice fue usar la forma clásica de encadenar ssh para alcanzar un objetivo remoto a través de hosts intermedios, de modo que la creación del túnel SOCKS se maneje de manera transparente al iniciar sesión en el objetivo. El primer truco ProxyCommand + nc es obligatorio porque -W implica ClearAllForwardings.
fuente
No hay ninguna facilidad para proporcionar un túnel de calcetines inversos con OpenSSH, por lo que debe ejecutar el comando ssh que proporciona el proxy de calcetines en la máquina "remota".
Si la máquina remota no puede ingresar en la máquina local, cree primero una conexión ssh de local a remota que reenvíe el puerto 22 a, por ejemplo, 2222. Luego, la máquina remota puede ingresar a la máquina local en el puerto 2222.
fuente
desde OpenSSH 7.6
ssh (1): agrega soporte para reenvío dinámico inverso. En este modo, ssh actuará como un proxy SOCKS4 / 5 y reenviará las conexiones a los destinos solicitados por el cliente SOCKS remoto. Este modo se solicita utilizando la sintaxis extendida para las opciones -R y RemoteForward y, dado que se implementa únicamente en el cliente, no requiere que se actualice el servidor para ser compatible.
https://www.openssh.com/txt/release-7.6
fuente
ssh -R 127.0.0.3:1080 remote
), actualmente puede vincular un proxy SOCKS inverso solo a un puerto.