두 서버 사이의 SCP 파일은 매우 적은 수의 서버를 통과합니다.

두 서버 사이의 SCP 파일은 매우 적은 수의 서버를 통과합니다.

server-a에서 server-d로 파일을 복사하고 싶지만 server-b와 server-c에서만 server-d에 액세스할 수 있습니다. 서버 a는 서버 b에만 액세스할 수 있고, 서버 b는 서버 c에만 액세스할 수 있으며, 서버 c는 서버 d에만 액세스할 수 있습니다.

현재 나는 이렇게 합니다:

server-a> scp /tmp/file.txt user@server-b
server-a> ssh user@server-b
server-b> scp /tmp/file.txt user@server-c
server-b> ssh user@server-c
server-c> scp /tmp/file.txt user@server-d

이는 5,6,7,.. 서버를 통해 수행될 수 있습니다.

명령 하나로 이 작업을 수행할 수 있나요?

답변1

ProxyCommand당신은 볼 필요가매뉴얼 페이지. 예는 다음과 같습니다.

Host serverB
HostName serverA.com
User someuser
ProxyCommand ssh -q serverB -W %h:%p  # -W is supported by a recent OpenSSH
# or for older versions or other implementations
# ProxyCommand ssh -q serverB nc %h %p

이를 통해 serverA를 입력하고 연결할 수 있으며 ssh serverB, 그런 다음 serverB에 연결됩니다. 이는 다음으로 쉽게 확장될 수 있습니다.

답변2

가장 좋은 방법은 아마도 터널을 설정한 다음 cat해당 터널을 통해 파일을 전달하는 것입니다.

cat file.txt | ssh -A -t user@server-b \
   "cat | ssh -A user@server-c         \
      \"cat | ssh -A user@server-d     \
         \\\"cat > /tmp/file.txt\\\"   \
      \"                               \
   "

관련 정보