SSH ProxyCommand 한 호스트가 다른 호스트에 연결

SSH ProxyCommand 한 호스트가 다른 호스트에 연결

ENV에는 로그인을 시도하고 원격 서버에서 ssh 명령을 실행하는 2개의 점프 호스트 서버가 있으며, Jump2 서버에 들어가는 sshproxy의 도움으로 각 위치에 대한 ssh/confg 파일이 있습니다. 모든 위치 서버에 동시에 액세스할 수 있도록 구성 파일을 병합하려고 합니다.

아래 참조 ENV
노트북 --------> Jumphost1 ---------> Jumphost2 --------->원격 서버

실제로 우리는 내 로컬 컴퓨터에서 스크립트를 실행하고 로컬에 저장된 출력을 얻을 계획입니다. 따라서 이 작업을 보관하려면 2개의 점프 호스트에 ssh를 수행하고 원격 서버에서 아래 명령을 실행해야 합니다. 그러면 로컬 시스템에서 스크립트가 실행되고 로컬 시스템 자체에서 출력이 표시됩니다.

Jump1은 2222 포트를 통해 액세스할 수 있습니다. 사용자는 동일한 사용자입니다.

하지만 원격 서버에 액세스하려면 다른 user1이 있어야 합니다.

ssh user1@ip < ./script >> file.txt &&

~/.ssh/config를 설정하십시오.

호스트 점프1 사용자 jump1user 포트 2222 호스트 점프2 ProxyCommand ssh -W %h:%p Jump1 사용자 jump2user 호스트 RemoveServer ProxyCommand ssh -W %h:%p Jump2 사용자 remoteUser

위 파일을 사용하면 아무런 문제 없이 Jump2 서버에 직접 로그인할 수 있습니다. 하지만 각 위치에 대해 매번 구성 파일을 변경해야 합니다.

각 지역에서 정보를 수집하기 위해 스크립트에서 아래 예제 ssh 명령을 실행하려면 단일 구성 파일이 필요합니다.

ssh jump2 | ssh user1@remoteserver-ip < ./script >> file.txt &&

답변1

이 예제를 통해 단 하나의 파일만 사용할 수 있기를 바랍니다.

Host *
    User username
    IdentityFile /home/username/.ssh/identity

Host some*
    ProxyCommand /usr/bin/ssh -p 2222 username@jumphost /usr/bin/nc %h %p 2> /dev/null

Host other*
    ProxyCommand /usr/bin/ssh -p 2222 username@otherjumphost /usr/bin/nc %h %p 2> /dev/null

Host something
    HostName 1.2.3.4

Host somethingelse
    HostName 2.3.4.5

Host otherthing
    HostName 3.4.5.6

답변2

Host remotehost
    ProxyCommand /usr/bin/ssh -p 2222 username@jumphost /usr/bin/nc %h %p 2> /dev/null

설명한 대로 점프 호스트는 포트 2222에서만 액세스할 수 있으므로 해당 사실을 프록시 SSH 연결에 알려야 합니다.

질문에 대한 추가 편집을 통해 실제로프록시를 수행할 호스트를 선택하면 조금 더 복잡해지지만 약간만 그렇습니다. 주어진:

  • local.example.com- 직접 작업하는 호스트
  • jump1.example.com- 직접 연결하는 호스트local
  • jump2.example.com- 직접 연결하는 호스트jump1
  • endpoint.example.com- 최종적으로 연결하려는 호스트

에서 local.example.comSSH 구성에 다음을 추가합니다.

host endpoint.example.com
    ProxyCommand /usr/bin/ssh -p 2222 [email protected] /usr/bin/nc %h %p 2> /dev/null

에서 jump1.example.comSSH 구성에 다음을 추가합니다.

host endpoint.example.com
    ProxyCommand /user/bin/ssh -p 2222 [email protected] /usr/bin/nc %h %p 2> /dev/null

이제 두 프록시를 모두 사용할 수 있습니다 .ssh [email protected]local.example.com

관련 정보