
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 .