중첩된 서버에 SSH를 통해 접속하고 일부 정보를 수집합니다.

중첩된 서버에 SSH를 통해 접속하고 일부 정보를 수집합니다.

저는 최근에 약간의 어려움을 겪었고, 중첩된 서버에 자동으로 로그인하여 각 서버에서 일부 정보를 수집하는 스크립트를 작성하고 싶었습니다. (구체적으로는 각 컴퓨터에서 정보를 nvidia-smi수집 하기 위해 GPU usage info)

중첩된 서버 구조는 다음과 같습니다. ( user@boss) 일반적으로 작업을 완료하려면 로그인을 사용한 다음 특정 시스템으로 이동 user@machine1, user@machine2, user@machine3, ...해야 하지만 모든 시스템의 GPU 사용량을 모니터링하는 것은 편리하지 않습니다. 예:sshuser@bossssh

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

  1. 비밀번호 인증을 사용하지 마세요. 공개 키 인증만 사용하고 SSH 키에는 안전하고 강력한 비밀번호를 사용하세요.

    바라보다비밀번호를 사용하는 것보다 SSH 키를 사용하는 것이 더 안전한 이유는 무엇입니까?키와 암호에 대한 흥미로운 토론과 관련 게시물에 대한 링크도 제공됩니다.

  2. 항상 프록시 호스트를 사용하여 원격 호스트에 연결하도록 SSH를 구성할 수 있습니다.

예를 들어 ~/.ssh/config:

Host machine1 machine2 machine3
    ProxyJump user@boss

그러면 ssh machine1그럴 것이다언제나을 통해 연결하세요 boss.

에서 man ssh_config:

프록시 점프

하나 이상의 점프 프록시를 로 지정합니다 [user@]host[:port].

여러 에이전트는 쉼표로 구분할 수 있으며 순차적으로 액세스됩니다.

이 옵션을 설정하면 먼저 지정된 호스트에 대한 (1) 연결을 설정한 다음 그곳에서 최종 대상으로 TCP 전달을 설정하여 ssh대상 호스트에 대한 (1) 연결이 발생합니다 .sshProxyJump

관련 정보