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\\\" \
\" \
"