クライアントコンピュータのスクリプトを介してSSHサーバーを終了しますか?

クライアントコンピュータのスクリプトを介してSSHサーバーを終了しますか?

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

関連情報