중개 기계를 통해 scp하는 방법은 무엇입니까? [복사]

중개 기계를 통해 scp하는 방법은 무엇입니까? [복사]

집에서 업무용 컴퓨터(우리가 부르는 이름)에 SSH로 접속하려면 C다음을 수행해야 합니다.

ssh -t user@B ssh C

B는 집에서 연결할 수 있는 서버이지만 C는 B에만 연결할 수 있습니다. 이것은 잘 작동합니다.

C의 파일을 집 컴퓨터로 복사하려면 scp집 컴퓨터에서 어떤 명령을 실행해야 합니까?

답변1

나는 당신에게 다음을 제안합니다 .ssh/config:

Host C
    User user
    ProxyCommand ssh -W %h:%p user@B

호스트 B가 신뢰할 수 없고 scp 및 sftp와 함께 작동한다면 더 이상 안전하지 않을 것입니다.

답변2

에서 언급했듯이이 답변, 이 ProxyCommand지시문을 사용하여 ssh호스트가 투명하게 세 번째 호스트로 이동하도록 할 수 있습니다.

다음과 같은 세 개의 호스트가 있다고 가정합니다.

  • workstation.example.com- 이것은 당신이 작업하고 있는 기계입니다.
  • proxy.example.com- SSH 트래픽을 라우팅하는 머신입니다.
  • endpoint.example.com- 여기가 트래픽이 끝나기를 원하는 곳입니다.

~/.ssh/configon 에 workstation다음을 추가합니다.

Host endpoint
    User endpointUser # set this to the username on the endpoint host
    HostName endpoint.example.com
    ProxyCommand ssh [email protected] nc %h %p 2> /dev/null

proxy호스트 시스템 에 nc(netcat)이 설치되어 있는지 확인하십시오.

그런 다음 에서 프록시 호스트를 통해 해당 시스템에 투명하게 프록시를 사용할 수 workstation있습니다 . 작동할 것입니다.ssh endpointsftp endpointscp

답변3

인증을 위해 인증서를 사용해야 하는 경우(일반적으로 AWS 환경에서) 이는 가능하고 비교적 간단합니다.

다음 명령은 server2의 RemotePath에서 컴퓨터의 localPath로 직접 파일을 복사합니다. 내부적으로 scp 요청은 server1을 통해 프록시됩니다.

scp -i user2-cert.pem -o ProxyCommand="ssh -i user1-cert.pem -W %h:%p user1@server1" user2@server2:/<remotePath> <localpath>

비밀번호 인증을 사용하는 경우 다음을 사용해 보세요.

scp -o ProxyCommand="ssh -W %h:%p user1@server1" user2@server2:/<remotePath> <localpath>

두 서버 모두에서 동일한 사용자 자격 증명을 사용하는 경우:

scp -o ProxyCommand="ssh -W %h:%p commonuser@server1" commonuser@server2:/<remotePath> <localpath>

관련 정보