두 개의 SSH 홉을 통해 명령 실행

두 개의 SSH 홉을 통해 명령 실행

다음과 같은AWS 모범 사례Bastion Machine SSH를 통해 액세스할 수 있는 인프라를 설정했습니다.

localhost → bastion → target server

대상 서버에 연결하기 위해 localhost와 요새 상자에 키 파일이 있고 SSH를 사용하여 다음과 같이 점프합니다.

localhost > ssh -i key.pem bastion
bastion > ssh -i key.pem target

처럼 보인다이 문제관련된. localhost에서 직접 대상 서버에 명령을 실행하는 방법은 무엇입니까?

답변1

SSH 구성에서 ProxyCommand를 사용해야 합니다. 아직 설정하지 않으셨다면 ~/.ssh/config다음을 참조하세요.여기

따라서 다음을 수행하고 싶을 것입니다.

  1. SSH 구성에서 요새를 전달 프록시로 배치합니다.

  2. ProxyCommand를 사용하여 요새에서 대상 서버로의 연결을 프록시합니다.

간단한 예는 다음과 같습니다.

Host <bastion>
    ForwardAgent yes

Host <target_server>
        User <user>
        Hostname <Ip/Hostname>
        ProxyCommand ssh -q -W %h:%p <user>@<bastion> nc 2> /dev/null
        IdentityFile ~/.ssh/id_rsa

답변2

명령줄에서 다음 명령을 사용하여 top대상 시스템에서 실행과 같은 원격 명령을 실행합니다.

$ ssh -qt bastion "ssh -qt target \"top\"\"

이는 특정 사용자와 함께 사용하거나 실행할 sudo수도 있습니다.sudo su - user

$ ssh -qt bastion "ssh -qt target \"sudo su - user1 -c 'ls -l'\""

ssh예제의 옵션이 수행하는 작업은 다음과 같습니다 .

  • ssh -q= 조용함, 간섭을 최소화하기 위해 서버의 배너를 억제합니다.
  • ssh -t= 터미널, 의사 터미널을 강제로 할당하여 터미널 지향 명령(예: top및 ) sudo이 대화형 세션을 허용하도록 합니다.

관련 정보