stdout
stdin
한 CentOS 서버의 데이터는 파이프를 통해 다른 CentOS 서버 로 전송되어야 합니다 . 가능합니까?
고쳐 쓰다
ScottPack, MikeyB 및 jofel은 모두 유효한 답변을 가지고 있습니다. 내 질문에 보안이 요구 사항으로 지정되지는 않았지만 보안은 항상 우수하기 때문에 Scott에게 답변을 드립니다. 그러나 다른 두 동료의 제안도 가능합니다.
답변1
이것은 부끄럽지 않은 확언입니다.
사용자가 ssh
원격 서버에서 명령을 실행하면 일종의 내부 입출력 리디렉션이 수행됩니다. 사실 저는 이것이 OpenSSH의 미묘하게 더 나은 기능 중 하나라고 생각합니다. 특히 ssh
원격 시스템에서 임의의 명령을 실행하는 데 을 사용하는 경우 ssh는 STDIN
및 STDOUT
실행 중인 명령을 매핑합니다.
예를 들어, 백업 tarball을 만들고 싶지만 로컬에 저장할 수 없거나 원하지 않는다고 가정해 보겠습니다. 이 구문을 살펴보겠습니다.
$ tar -cf - /path/to/backup/dir | ssh remotehost "cat - > backupfile.tar"
우리는 tarball을 만들고 STDOUT
거기에 일반 내용을 쓰고 있습니다. SSH를 사용하여 원격 명령을 실행하므로 STDIN STDIN
이 cat
. 그런 다음 파일로 리디렉션합니다.
답변2
회선 보안에 대해 걱정할 필요가 없을 때 호스트 간에 데이터를 전송하는 편리한 방법은 netcat
연결 양쪽에서 사용하는 것입니다.
이를 통해 비동기식으로 설정할 수도 있습니다.
"수신기"(실제로는 양방향으로 통신하지만 이렇게 생각하는 것이 더 쉽습니다)에서 다음을 실행합니다.
nc -l -p 5000 > /path/to/backupfile.tar
"발신자"에서 실행:
tar cf - /path/to/dir | nc 1.2.3.4 5000
답변3
답변4
명령을 통해 SSH 공개 키를 다른 호스트에 넣어보세요.
ssh [email protected] 'cat >> .ssh/authorized_keys' < .ssh/id_rsa.pub