No se puede realizar scp a través de una conexión compartida

No se puede realizar scp a través de una conexión compartida

Tengo el siguiente problema con una conexión compartida SSH:

# Set up a shared connection
ssh -f -N -M -S "$SSH_CONTROL_SOCKET" root@"$ONE_HOST"

# I can scp *without* the shared connection
scp root@"$ONE_HOST":/etc/hosts /dev/null

# I can execute a remote command *with* the shared connection
ssh -S "$SSH_CONTROL_SOCKET" root@"$ONE_HOST" "date"

# But I can't scp *with* the shared connection
scp -vvv -S "$SSH_CONTROL_SOCKET" root@"$ONE_HOST":/etc/hosts .

Este script da este resultado:

hosts                                                              100%   59    67.8KB/s   00:00
Wed Feb 28 08:23:10 MST 2018
Executing: program /home/myUser/ssh_sharing_socket host myHost.example.com, user root, command scp -v -f /etc/hosts
/home/myUser/ssh_sharing_socket: Permission denied

Mi conexión compartida SSH se autentica mediante una clave pública y un agente SSH.

¿Qué debo hacer para poder realizar scp a través de una conexión compartida?

Respuesta1

sshy scputilizar la -Sopción para diferentes propósitos.

ssh:

-Sctl_path
Especifica la ubicación de un socket de control para compartir conexión, o la cadena "none" para deshabilitar la conexión compartida. Consulte la descripción de ControlPath y ControlMaster en ssh_config(5) para obtener más detalles.

scp:

-Sprogram
Nombre del programa que se utilizará para la conexión cifrada. El programa debe comprender las opciones de ssh(1).

Recibes el error "Permiso denegado" porque scpestás intentando ejecutar el socket de control como un programa.

Para scp, debes usar la opción-o ControlPath=/path/to/socket:

scp -vvv -o "ControlPath=$SSH_CONTROL_SOCKET" root@"$ONE_HOST":/etc/hosts .

información relacionada