我有一个 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