通过客户端电脑上的脚本关闭 ssh 服务器?

通过客户端电脑上的脚本关闭 ssh 服务器?

我有一个 Ubuntu 服务器,我想从我的笔记本电脑上关闭它。我通常必须通过 ssh 进入服务器并输入“sudo shutdown now”,但这需要一些时间。

有没有办法编写一个脚本来做到这一点?我怎样才能实现ssh密码?

答案1

将您的公钥添加到服务器,然后发送shutdown命令:

ssh [email protected] 'shutdown'

答案2

这只是一个例子你能做什么。根据自己的情况修改。有很多不同的方法可以以不同程度的安全/保障来完成此任务(例如,在命令行上使用带有密码的 sshpass 是真的不安全并将您的用户 ssh 密钥添加到服务器上的 root 是真的真的不安全)。

这假设您的用户名是myuser

服务器作为root

echo 'myuser ALL=(ALL) NOPASSWD: /usr/sbin/shutdown now' >> /etc/sudoers.d/99-myuser-shutdown

客户/桌面/工作站为myuser

ssh-keygen -t Ed25519 -N '' -f ~/.ssh/id_ed25519_shutdown

(echo -n 'command="/usr/bin/sudo /usr/sbin/shutdown now" ' &&
 cat ~/.ssh/id_ed25519_shutdown.pub) |
ssh myuser@server 'mkdir -pm 700 .ssh && cat >> .ssh/authorized_keys'

现在在客户要关闭服务器只需执行以下操作:

ssh -i ~/.ssh/id_ed25519_shutdown myuser@server

即使您的客户端用户帐户被黑客攻击,他们所能做的就是关闭服务器。他们不会在服务器上具有 shell 访问权限,除非您向authorized_keys 添加另一个密钥或其他内容,并且他们肯定不会具有 root 访问权限(!)。

答案3

我的建议是使用 sshpass 命令。但是,需要进行初始身份验证。

sshpass -p 'Password' ssh 192.168.xxx.xxx sudo shutdown -h now

相关内容