Mi diseño de red es algo como esto:
Ahora Alice tiene acceso a la puerta de enlace SSH (solo puerta de enlace de ahora en adelante) con:
ssh [email protected]
y el archivo de claves autorizado en la puerta de enlace se ve así
#/home/Alice/.ssh/authorized_keys
command="ssh -t alice@web" ssh-rsa ABCD...E== alice@somehost
así que cuando Alice intenta conectarse a la puerta de enlace con su clave privada, en realidad se conecta al servidor web (la PC de la puerta de enlace puede hacer una conexión al servidor web con una clave privada sin contraseña, para que permanezca transparente).
La pregunta
¿Cómo puedo configurar esto para que Alice también pueda scp cosas al servidor web?
Sé que esto hace una conexión por separado, pero ¿hay alguna manera de que esto funcione como un ssh normal para que incluso algo así
-R12345:localhost:22
funcione?
Tuve exactamente el mismo problema que este, pero lo puse a trabajar sin cambiar radicalmente todo.
Todo lo que hice fue agregar $ SSH_ORIGINAL_COMMAND a la puerta de enlace autorizada_claves para pasar cualquier cosa por la cadena al servidor final.
Así que esto:
Se convierte en:
El -q se usa para suprimir el mensaje de conexión cerrada de la máquina de punto final para que no termine en la salida local si se usa la redirección local.
Luego puede usar scp así:
Esto tiene la ventaja adicional de permitir a los usuarios pasar el comando a través de comandos al servidor de punto final y obtener el resultado en su sesión local para que puedan redirigirlos a un archivo o canalizarlos a un programa diferente.
Por ejemplo:
Esto funciona porque parece que sshd llena la variable de entorno $ SSH_ORIGINAL_COMMAND con un comando especificado por el cliente ssh, pero no estoy seguro de por qué esto milagrosamente permite que scp pase a la máquina del punto final, así como a los comandos.
fuente
Desafortunadamente, el reenvío de puertos no ayudaría a copiar archivos directamente desde la estación de trabajo de Alice al servidor web
scp
. En esta publicación SO , expliqué por qué ssh (y scp, ya que utiliza los mismos mecanismos de autenticación) no funcionarán para las conexiones reenviadas a través de ssh.La opción sería configurar un servidor VPN en la máquina que actúe ahora como puerta de enlace SSH, conectarse a él y luego tener acceso directo a cualquier máquina detrás del firewall.
fuente