다중 홉 SSH 터널에서 ssh-copy-id를 사용하는 방법은 무엇입니까?

다중 홉 SSH 터널에서 ssh-copy-id를 사용하는 방법은 무엇입니까?

~/.ssh/id_rsa.pub내 로컬 컴퓨터에 있는 파일의 공개 SSH 키를 ~/.ssh/authorized_keysSSH 홉 두 개 떨어진 원격 호스트의 파일 로 복사 하고 싶습니다 . 즉, localhostssh만 접근이 가능 host1하지만, host1ssh는 접근이 가능합니다 host2. 내 공개 SSH 키를 에서 localhost으로 복사하고 싶습니다 host2.

SSH 키를 한 홉 떨어진 원격 호스트에 복사하려면,SSH 문서다음 명령을 내리세요:

ssh-copy-id -i ~/.ssh/mykey user@host

단일 명령으로 두 홉 떨어진 컴퓨터에 키를 복사할 수 있는 방법이 있습니까?

답변1

with 옵션 ssh에 어떤 옵션이든 전달할 수 있습니다 . 이 옵션을 사용하면 호스트를 점프하여 키를 호스트에 복사할 수 있습니다.ssh-copy-id-oProxyJumpssh-copy-id

다음은 점프 호스트 Jump.spack.org를 통해 ssh 키를 leia.spack.org에 복사하는 예입니다.

$ ssh-copy-id -o ProxyJump=jump.spack.org leia.spack.org
[email protected]'s password:

Number of key(s) added:        1

그런 다음 다음을 사용하여 테스트하십시오.

$ ssh -J jump.spack.org leia.spack.org
Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.4.0-42-generic x86_64)

답변2

ssh-copy-id로는 더블홉이 불가능하다고 생각합니다. scp를 사용하여 한 서버에서 세 번째 서버로 파일을 이동할 수 있습니다. 남자 scp를 보세요. 하지만 Authorized_keys에 텍스트를 넣고 권한을 설정하려면 여전히 몇 가지 작업을 수행해야 합니다.

하지만!

SSH를 사용하여 한 서버에서 다른 서버로 이동하고 그곳에서 명령을 실행할 수 있습니다.

이와 같은 것은 키를 여기에서 저기로 복사합니다. 보내려는 .ssh/id_rsa.pub 키를 아래 mysupersecretkeyfromhell 위치에 복사하여 붙여넣고 이름과 IP 주소를 분명히 변경해야 합니다.
이와 같은 것은 첫 번째 서버를 건너뛰고 두 번째 서버로 SSH를 통해 명령을 실행하는 것입니다.

ssh -J [email protected] [email protected] echo mySupersecretKeyfromehell >> .ssh/authorized_keys && chmod 700 .ssh && chmod 600 .ssh/authorized_keys

이는 최신 버전의 SSH를 실행하고 있다고 가정합니다.

키를 변수에 넣어 마지막 명령을 단축할 수도 있습니다.
아래 백틱은 작은따옴표가 아니라는 점에 유의하세요!

MYKEYVAR="echo `cat .ssh/id_rsa.pub`" 
ssh -J [email protected] [email protected] echo $MYKEYVAR >> .ssh/authorized_keys && chmod 700 .ssh && chmod 600 .ssh/authorized_keys

관련 정보