Невозможно выполнить scp через общее соединение

Невозможно выполнить scp через общее соединение

У меня возникла следующая проблема с общим подключением 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 .

Этот скрипт выдает следующий результат:

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

Мое общее SSH-подключение аутентифицируется с помощью открытого ключа и SSH-агента.

Что мне нужно сделать, чтобы иметь возможность использовать scp через общее соединение?

решение1

sshи scpиспользовать эту -Sопцию для разных целей.

ssh:

ctl_path
Указывает местоположение управляющего сокета для общего доступа к подключению или строку «none» для отключения общего доступа к подключению. Подробности см. в описании ControlPath и ControlMaster в ssh_config(5).

scp:

program
Имя программы, используемой для зашифрованного соединения. Программа должна понимать опции ssh(1).

Вы получаете сообщение об ошибке «Отказано в доступе», поскольку scpпытаетесь запустить управляющий сокет как программу.

Для scp следует использовать опцию-o ControlPath=/path/to/socket:

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

Связанный контент