machine1과 machine2라는 두 대의 컴퓨터가 있습니다.
machine1의 내용을 machine2의 파일에 쓰고 싶습니다.
동일한 컴퓨터에서 파일 sudo cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
에 기록된 콘텐츠를 실행할 수 있습니다 .~/.ssh/id_dsa.pub
~/.ssh/authorized_keys
~/.ssh/id_dsa.pub
하지만 machine1의 내용을 ~/.ssh/authorized_keys
machine2의 파일 에 쓰고 싶습니다 . ssh로 접속해서 할 수 있어요. 사용자 이름과 비밀번호를 사용하여 단일 명령으로 자동 모드로 hadoop을 설치했기 때문입니다.
scp
전체 파일을 교체하고 싶지 않습니다 .
다른 컴퓨터의 사용자 이름/비밀번호를 제공하는 단일 명령으로 이 작업을 수행하려면 어떻게 해야 합니까?
답변1
다음을 수행할 수 있습니다.
cat ~/.ssh/id_dsa.pub | ssh machine2 'cat >> ~/.ssh/authorized_keys'
하지만 아마도 이 도구를 사용해야 할 것입니다 ssh-copy-id
. 다음은 이 목적을 위해 특별히 제작된 도구입니다.
ssh-copy-id machine2
또는
ssh-copy-id id_dsa machine2
답변2
ssh 명령은 로컬 표준 입력을 캡처하고 외부 명령을 실행할 수도 있습니다. 이 두 가지 사실을 결합하면 다음이 가능해집니다.
ssh machine2 tee -a "~/.ssh/authorized_keys" < ~/.ssh/id_dsa.pub
ssh-copy-id
이 프로세스를 자동화하는 "intent"라는 명령도 있습니다 . 더 많은 정보를 보실 수 있습니다 man ssh-copy-id
.