ssh 到嵌套服务器并收集一些信息

ssh 到嵌套服务器并收集一些信息

我最近遇到了一些困难,我想编写一个脚本来自动登录嵌套服务器以收集每个服务器上的一些信息:(具体来说,用于nvidia-smi收集GPU usage info每台机器上的信息)

嵌套服务器结构如下:( user@bossuser@machine1, user@machine2, user@machine3, ...通常我们必须使用ssh登录user@boss,然后ssh到特定机器来完成我们的工作,但监视所有机器GPU使用情况并不方便,我尝试编写一个脚本,例如:

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,...是子节点?有人可以帮忙吗?(注意我没有 root 权限)

添加服务器包括 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]

多个代理可以用逗号分隔,并且将按顺序访问。

设置此选项将导致ssh(1) 连接到目标主机,方法是首先ssh与指定ProxyJump主机建立 (1) 连接,然后建立从那里到最终目标的 TCP 转发。

相关内容