공유 연결을 통해 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" 문자열을 지정합니다. 자세한 내용은 ssh_config(5)의 ControlPath 및 ControlMaster에 대한 설명을 참조하세요.

scp:

-에스
프로그램 암호화된 연결에 사용할 프로그램 이름입니다 . 프로그램은 ssh(1) 옵션을 이해해야 합니다.

scp에서 제어 소켓을 프로그램으로 실행하려고 하기 때문에 "권한 거부됨" 오류가 발생합니다 .

scp의 경우 다음 옵션을 사용해야 합니다.-o ControlPath=/path/to/socket:

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

관련 정보