想要使用明文密码 ssh 到同一子网中的其他客户端服务器,然后 sudo 到 root 以关闭命令并重新启动。我故意不添加 ssh 密钥。我试过了
ssh -tt [username]@[host] "sudo su -; service snmpd stop; reboot ";
我如何在登录时传递用户名和 sudo 的密码?
答案1
笔记:这里提供的答案应该有效。但是,违反了最佳实践。该答案还假设该sshpass
命令在将启动命令的主机上可用。用户注意到它将被使用一次,然后被删除。
sshpass -pPASSWORD ssh -tt [username]@[host] 'echo PASSWORD | sudo -S -s /bin/bash -c "service snmpd stop; reboot"'
至少,用户应该使用密钥交换进行 ssh 登录,并允许用户在没有密码的情况下通过 sudo 执行所需的命令。
答案2
尝试使用名为 sshpass 的程序来传递您的 ssh 密码。它可以这样使用:
SSHPASS='sshpassword'
remoterootpass='remoterootpass'
sshpass -e ssh user@host <'EOF'
su -
echo "$remoterootpass"
service snmpd stop
reboot
EOF
您还可以将远程命令放入 shell 脚本中并按如下方式调用:
SSHPASS='sshpassword'
cat myscript.sh | sshpass -e ssh user@host