Ubuntuサーバーがありますが、ラップトップからサーバーをシャットダウンしたいと思います。通常、サーバーにsshを使用して「sudo shutdown now」と入力する必要がありますが、少し時間がかかります。
これを行うスクリプトを書く方法はありますか? SSHパスワードをどのように実装しますか?
答え1
公開鍵をサーバーに追加し、次のshutdown
コマンドを送信します。
ssh [email protected] 'shutdown'
答え2
これはただはいあなたは何ができますか?それぞれの状況に合わせて修正してください。さまざまなレベルの安全/セキュリティでこれを行うさまざまな方法があります(たとえば、コマンドラインでパスワードでsshpassを使用する例本物安全ではなく、サーバーのルートにユーザーSSHキーを追加することは本当に危険)。
これはあなたのユーザー名がと仮定されます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
クライアントユーザーアカウントがハッキングされても、できることはサーバーをシャットダウンするだけです。 Authorized_keysに他のキーや何かを追加しない限り、サーバーへのシェルアクセス権はなく、間違いなくルートアクセス権(!)もありません。
答え3
私の提案はsshpassコマンドを使用することです。ただし、初期認証が必要です。
sshpass -p 'Password' ssh 192.168.xxx.xxx sudo shutdown -h now