Não é possível scp através de uma conexão compartilhada

2

Estou tendo o seguinte problema com uma conexão compartilhada 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 fornece esta saída:

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

Minha conexão compartilhada SSH é autenticada usando uma chave pública e um agente SSH.

O que devo fazer para conseguir scp através de uma conexão compartilhada?

    
por Dave 28.02.2018 / 16:40

1 resposta

3

ssh e scp usam a opção -S para finalidades diferentes.

ssh :

-S ctl_path
Specifies the location of a control socket for connection sharing, or the string “none” to disable connection sharing. Refer to the description of ControlPath and ControlMaster in ssh_config(5) for details.

scp :

-S program
Name of program to use for the encrypted connection. The program must understand ssh(1) options.

Você está recebendo o erro "Permissão negada" porque scp está tentando executar o soquete de controle como um programa.

Para scp, você deve usar a opção -o ControlPath=/path/to/socket :

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