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