저는 최근에 약간의 어려움을 겪었고, 중첩된 서버에 자동으로 로그인하여 각 서버에서 일부 정보를 수집하는 스크립트를 작성하고 싶었습니다. (구체적으로는 각 컴퓨터에서 정보를 nvidia-smi
수집 하기 위해 GPU usage info
)
중첩된 서버 구조는 다음과 같습니다. (
user@boss
) 일반적으로 작업을 완료하려면 로그인을 사용한 다음 특정 시스템으로 이동 user@machine1, user@machine2, user@machine3, ...
해야 하지만 모든 시스템의 GPU 사용량을 모니터링하는 것은 편리하지 않습니다. 예:ssh
user@boss
ssh
sshpass -p "xxxx" ssh -o StrictHostKeyChecking=no [email protected]
for v in machine1 machine2
do
sshpass -p "xxxx" ssh -o StrictHostKeyChecking=no v
echo $v
nvidia-smi
done
하지만 user@boss에만 로그인합니다. 저는 서버 관련 내용에 익숙하지 않습니다. User@boss가 루트 노드이므로 machine1, machine2,...가 하위 노드입니까? 누구든지 도와줄 수 있나요? (참고로 저는 루트 권한이 없습니다)
다음에 추가user@boss, user@machine1, user@machine2 등의 서버는 설치되지 않고 지원 sshpass
만 됩니다.ssh
답변1
비밀번호 인증을 사용하지 마세요. 공개 키 인증만 사용하고 SSH 키에는 안전하고 강력한 비밀번호를 사용하세요.
바라보다비밀번호를 사용하는 것보다 SSH 키를 사용하는 것이 더 안전한 이유는 무엇입니까?키와 암호에 대한 흥미로운 토론과 관련 게시물에 대한 링크도 제공됩니다.
항상 프록시 호스트를 사용하여 원격 호스트에 연결하도록 SSH를 구성할 수 있습니다.
예를 들어 ~/.ssh/config
:
Host machine1 machine2 machine3
ProxyJump user@boss
그러면 ssh machine1
그럴 것이다언제나을 통해 연결하세요 boss
.
에서 man ssh_config
:
프록시 점프
하나 이상의 점프 프록시를 로 지정합니다
[user@]host[:port]
.여러 에이전트는 쉼표로 구분할 수 있으며 순차적으로 액세스됩니다.
이 옵션을 설정하면 먼저 지정된 호스트에 대한 (1) 연결을 설정한 다음 그곳에서 최종 대상으로 TCP 전달을 설정하여
ssh
대상 호스트에 대한 (1) 연결이 발생합니다 .ssh
ProxyJump