ENV에는 2개의 Jumphost 서버가 있고 원격 서버에 로그인하고 sshproxy의 도움으로 ssh 명령을 실행하려고 합니다. 각 위치에 ssh/confg 파일이 있으며 Jump2 서버에 들어갑니다. 모든 위치 서버에 동시에 액세스할 수 있도록 구성 파일을 병합하려고 합니다.
아래 ENV
노트북 -------->
Jumphost1 --------->
Jumphost2 --------->
원격 서버를 참조하세요.
실제로 우리는 로컬 컴퓨터에서 스크립트를 실행하고 출력을 로컬에 저장할 계획입니다. 따라서 이 작업을 보관하려면 2개의 점프 호스트에 SSH로 연결하고 원격 서버에서 다음 명령을 실행해야 합니다. 그러면 로컬 시스템에서 스크립트가 실행되고 로컬 시스템 자체에서 출력이 표시됩니다.
Jump1은 포트 2222를 통해 액세스할 수 있으며 사용자는 동일한 사용자입니다.
하지만 원격 서버에 접속하려면 다른 사용자 1이 있어야 합니다.
ssh user1@ip < ./script >> file.txt &&
~/.ssh/config를 설정합니다:
호스트 점프 1 사용자 점프1사용자 포트 2222 호스트 점프 2 ProxyCommand ssh -W %h:%p 점프 1 사용자 점프2user 호스트 RemoveServer ProxyCommand ssh -W %h:%p 점프 2 사용자 원격 사용자
위 파일을 통해 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