
쉘 스크립트를 사용하여 점프 서버에서 여러 서버로 SSH 키를 보내려고 합니다. 내 광고 계정에서만 로그인할 수 있으며 루트로 전환하면 루트로 직접 로그인할 수 없습니다. 이 조건이 있으면 /root/.ssh/authorized-keys 아래에 복사해야 하는 서버에 SSH 키를 어떻게 보낼 수 있습니까?
답변1
다른 서버에 루트로 액세스하기 위해 점프 서버에서 루트일 필요는 없습니다.
아직 SSH 구성 파일이 없다면 먼저 SSH 구성 파일을 설정하세요. 일반적으로 ~/.ssh/config
(~는 $HOME의 약어) 에 존재합니다 .
먼저 알아야 할 사항은 점프 서버에서 이동하려는 서버의 IP 범위입니다. 해당 IP가 점프 서버와 동일한 서브넷에 있지 않기를 바랍니다.
샘플은 다음과 같습니다.
# save as ~/.ssh/config
CheckHostIP no
StrictHostKeyChecking no
AddKeysToAgent yes
ForwardAgent yes
UserKnownHostsFile /dev/null
# Servers to get to via jump server
# (note their subnet defined by a range using an asterisk, you need to provide)
# This establishes root as login id for every server in the range
# and uses the JumpServer (can leave that name as is) as a proxy.
Host 192.168.122.*
ProxyJump JumpServer
User root
# JumpServer info. Provide its IP or FQDN and your user id
# IP or FQDN set in the HostName; you can leave Host set as JumpServer
# since this is referred to above in ProxyJump line
Host JumpServer
HostName ip-or-fqdn-of-jumpserver
User your-user-id
위 샘플에서 환경에 맞게 3가지 사항만 변경하면 됩니다.
192.168.122.*
서버 IP 범위로 교체ip-or-fqdn-of-jumpserver
점프 서버 IP 또는 FQDN(정규화된 도메인 이름)으로 바꾸세요 .your-user-id
ssh에 사용되는 점프 서버의 사용자 ID로 바꾸십시오 .
해당 파일이 생성되면 ssh-copy-id
아래 표시된 명령을 통해 모든 서버의 루트 Authorized_keys 파일에 공개 키를 넣을 수 있습니다. 물론 처음에는 자격 증명을 제공해야 할 수도 있습니다.
또한 기본적으로 대부분의 서버는 SSH 루트 액세스를 직접 허용하지 않도록 구성됩니다. 이 경우 각 서버에서 더 많은 sshd_config 변경 사항을 적용해야 합니다.
이제 간단히 실행하여 ssh-copy-id 192.168.122.10
공개 키를 서버의 루트 Authorized_keys 파일에 복사하세요. 물론 IP를 자신의 서버 IP로 바꾸십시오. 각 서버에 대해 반복합니다.
키가 각 서버에 있으면 이제 ssh some-server-IP
루트로 원격 서버에 액세스하기 위해 설정된 사용자 ID와 포트 전달을 사용하여 점프 서버에 자동으로 연결될 수 있어야 합니다.