
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.com
SSH 구성에 다음을 추가합니다.
host endpoint.example.com
ProxyCommand /usr/bin/ssh -p 2222 [email protected] /usr/bin/nc %h %p 2> /dev/null
에서 jump1.example.com
SSH 구성에 다음을 추가합니다.
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