SCP a través de host intermedio

1

He intentado investigar mis opciones, pero nada funciona como lo necesito. La información más útil se encuentra aquí: archivos scp vía host intermedio

Tengo la siguiente configuración: Estoy en la Máquina A. Tengo teclas configuradas en la Máquina B (con el agente ssh habilitado) que me permiten acceder a la Máquina C. (Aparte de esto, la razón de esta configuración es que el acceso a la máquina B está muy restringido, incluyendo la autenticación de dos factores, y cada otra máquina está configurada para permitir solo el acceso de la raíz SSH proveniente de esta máquina.)

El problema es que el código ssh-agent solo se ejecuta para shells de inicio de sesión, no cuando los comandos se ejecutan sobre ssh, por lo que no intenta usar la clave que se encuentra en la Máquina B para acceder a la Máquina C. Este es el código en mi .bashrc y .profile:

export SSH_AUTH_SOCK=~/.ssh/ssh-agent.$HOSTNAME.sock
ssh-add -l 2>/dev/null >/dev/null
if [ $? -ge 2 ]; then
  ssh-agent -a "$SSH_AUTH_SOCK" >/dev/null
fi

Idealmente, me gustaría poder asignar un alias a algún comando para poder ejecutarlo como scp (por ejemplo, scpproxy localfile user@MachineC:/root/remotefile ). Mi solución actual es, desde la Máquina B, scp -3 user@MachineA:localfile user@MachineC:remotefile (donde el -3 hace que scp use la máquina local como host intermedio, en lugar del predeterminado donde intenta copiar directamente de A a C), que es menos que perfecto.

Cualquier ayuda es apreciada!

Travis DePrato
fuente

Respuestas:

1

La configuracion para scp y ssh a través de los hosts intermedios son (esencialmente) lo mismo. Muchas otras respuestas para scp, ssh o incluso rsync En el mismo contexto debería trabajar para usted. Fundamentalmente, debe usar la misma tecla para acceder desde la Máquina "A" a "B" que la que usa para pasar de la Máquina "B" a "C". Sin embargo, parece que podría estar usando las claves sin frase de contraseña ubicadas en "B" para obtener acceso a "C". Dejando a un lado las (malas) implicaciones de seguridad de las claves sin contraseña, en su lugar, le sugiero que coloque la misma clave pública de su clave privada (con suerte, con contraseña protegida) ubicada en "A" en el ~/.ssh/authorized_keys archivo en "C". De esa manera, todo lo que necesitas hacer es algo como esto:

scp -o "ProxyCommand ssh -A B -W %h:%p" C:file .

Eso configurará el proxy / salto a través del host "B", recuperando el nombre de archivo 'archivo' en su directorio de inicio en "C" y depositándolo en el directorio de trabajo actual en "A".

Adicionalmente puedes codificar eso en tu ~/.ssh/config expediente:

Host C
  ProxyCommand ssh -A B -W %h:%p

Entonces, simplemente puede:

scp C:file .

Además, nada de esto requiere un alias o un script para que lo haga por usted. Solo usas scp directamente.

crimson-egret
fuente