2

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

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

1 ответ1

3

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

ssh:

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

scp:

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .