Recentemente, encontrei algumas dificuldades, que desejo escrever um script para fazer login automaticamente em servidores aninhados para coletar algumas informações sobre cada um deles: (especificamente, use nvidia-smi
para coletar o GPU usage info
em cada máquina)
a estrutura do servidor aninhado é como:
user@boss
( user@machine1, user@machine2, user@machine3, ...
) normalmente temos que usar ssh
para fazer login e user@boss
, em seguida, ssh
para uma máquina específica para fazer nosso trabalho, mas não é conveniente monitorar todo o uso da GPU da máquina, tentei escrever um script como:
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
mas ele só loga no user@boss, não estou familiarizado com coisas de servidor, user@boss é o nó raiz, então machine1, machine2, ... são nodos filhos? alguém pode ajudar? (observe que não tenho privilégio de root)
ADICIONE os servidores, incluindo user@boss e user@machine1, user@machine2, ... todos não foram sshpass
instalados, apenas ssh
surportados
Não use autenticação de senha. Use apenas autenticação de chave pública e tenha senhas boas e fortes para suas chaves ssh.
Consulte Por que usar uma chave SSH é mais seguro do que usar senhas? e as postagens vinculadas e relacionadas para discussões interessantes sobre chaves versus senhas.
Você pode configurar o ssh para sempre se conectar a um host remoto usando um host proxy.
por exemplo no seu
~/.ssh/config
:então sempre
ssh machine1
se conectará via .boss
De
man ssh_config
: