scp
현재 로컬 컴퓨터의 SSH 키를 사용하여 한 서버에서 다른 서버로 파일을 전송 하려고 합니다 .
현재 사용하고 있는 명령은 다음과 같습니다.
sudo scp -r -o "ForwardAgent yes" <new_folder> <second-server-path>
나는 팔로우했다이 github 문서내 SSH 에이전트가 두 번째 서버의 터미널로 전달되었는지 확인했습니다.
-o "ForwardAgent yes"
~에서이 참조man scp
, 하지만 내 참조 에는 나타나지 않습니다 .
그러나 이 모든 일이 있은 후에도 명령은 여전히 암호를 묻습니다(우리는 이를 피하려고 노력하고 있습니다). SSH 전달을 사용하는 방법에 대한 아이디어가 있습니까?
답변1
scp
프록시 전달은 지원되지 않습니다.(코드에서 비활성화되도록 하드코딩되어 있음) 따라서 이는 귀하가 시도하는 것과 다를 수 있습니다.문제는
sudo
연결이ssh-agent
환경 변수SSH_AUTH_SOCK
(echo $SSH_AUTH_SOCK
)에 저장되고 해당 변수가 실행 중에 지속되지 않으므로sudo
두 가지 가능성이 있습니다.sudo
를 사용 하지 마십시오scp
.scp
일반 위치에서 실행한 다음sudo cp
원하는 위치에서 파일을 실행하십시오.환경 보호를 시행합니다
sudo
.-E
스위치 변수를 사용하십시오 .sudo scp -r <new_folder> <second-server-path>
-3
호스트(프록시에 액세스할 수 있는 곳)에서 두 번 인증되는 두 서버 간에 파일을 복사하려는 경우 스위치를 사용하십시오 .
답변2
OpenSSH 8.4(2020년 9월 27일 출시)에서 scp 및 sftp는 프록시 전달에 대한 지원을 추가했습니다.
https://www.openssh.com/txt/release-8.4
- scp(1), sftp(1): scp 및 sftp에서 프록시 전달을 명시적으로 활성화하려면 -A 플래그를 허용합니다. ssh_config가 활성화하더라도 기본적으로 정방향 프록시는 없습니다.
경고하다!점프 호스트가 손상되거나 중간자 공격의 영향을 받을 때 프록시 전달을 사용하는 것은 보안 문제입니다.
점프 호스트를 사용하여 로컬 컴퓨터에서 내부 네트워크로 파일을 복사하는 경우 대상 서버에 대한 연결이 종단 간 암호화되고 점프 호스트가 액세스할 수 없기 때문에 프록시 전달 대신 ProxyJump를 사용하는 것이 좋습니다. 프록시를 사용하거나 데이터를 읽습니다.
점프 호스트를 사용하는 scp 명령의 예:
scp -o 'ProxyJump your.jump.host' myfile.txt remote.internal.host:/my/dir
고쳐 쓰다:
OpenSSH 8.4에는 원격 간 파일 전송을 위해 scp 및 sftp에 대한 프록시 전달이 추가되었습니다.
과거에는 첫 번째 호스트에서 자격 증명을 제공해야 하거나 트래픽이 로컬 시스템을 통해 라우팅되어야 했습니다.
OpenSSH 8.4 scp 및 sftp는 이제 프록시 전달이 가능합니다.
scp -A user1@remote1:/home/user1/file1.txt user2@remote2:/home/user2/file1.txt