WindowsからLinuxサーバーをコマンドで操作!
今回は、WindowsのPowerShellからLinuxサーバーのコマンドを実行し、
サーバーを再起動する方法を解説します。
この記事では、特に自動化にフォーカスし、
再起動時のパスワード入力を不要にする設定や
公開鍵認証の設定方法をわかりやすく説明します。
手順の概要
- sudoコマンド実行時のパスワード入力を不要にする
- SSH接続を公開鍵認証にする
- PowerShellスクリプトを作成する
①sudoコマンド実行時のパスワード入力を不要にする
Linuxサーバーで sudo を使用する場合、
通常はパスワードが求められます。
しかし、自動化ではこれを避ける必要があります。
以下の手順で設定を変更します。
1. Linuxサーバーで sudo の設定ファイルを編集
sudo visudo
2. ファイル内に以下の行を追加(rootuser を実際のユーザー名に変更)
rootuser ALL=(ALL) NOPASSWD:/sbin/reboot
追加する位置は、rootuser ALL=(ALL) ALLの下にしましょう。
rootuser ALL=(ALL) ALL
rootuser ALL=(ALL) NOPASSWD:/sbin/reboot
この例では、sudoが必要なコマンドの内、
rebootのみパスワード無しで実行できるようになります。
Vimエディタの使い方
• 編集を開始する: i を押します。
• 編集を終了して保存する: Esc を押してから、:wq! と入力して Enter を押します。
:wq!
② SSH接続を公開鍵認証にする
公開鍵認証を使うことで、
Windowsからサーバーへ安全かつスムーズに接続できます。
1. サーバー側で .ssh ディレクトリを作成
まず、Linuxサーバーで以下のコマンドを実行します。
mkdir -p ~/.ssh
chmod 700 ~/.ssh
2. Windowsで公開鍵と秘密鍵を生成
次に、Windows側でSSH鍵ペアを生成します。
PowerShellを開き、以下を実行します。
ssh-keygen -t rsa -b 4096 -f C:\Users\<ユーザー名>\.ssh\id_rsa
3. 公開鍵をサーバーにコピー
公開鍵をLinuxサーバーの ~/.ssh/authorized_keys に登録します。
WinSCPを使用して公開鍵をサーバーに転送
- WinSCPでサーバーに接続
- 公開鍵(id_rsa.pub)をサーバーの ~/.ssh/ ディレクトリにコピー
4. 公開鍵を設定
Linuxサーバーで以下のコマンドを実行します。
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
5. SSH設定ファイルを確認
サーバーの /etc/ssh/sshd_config を確認し、以下の設定を有効にします。
PubkeyAuthentication yes
PasswordAuthentication no
設定後、SSHを再起動します。
sudo systemctl restart sshd
③PowerShellスクリプトを作成する
最後に、Windowsからサーバーを再起動するためのスクリプトを作成します。
今回は再起動のみですが、用途に合わせてスクリプトを作成してください。
スクリプトの内容
以下をPowerShellスクリプトとして保存します(例: reboot_server.ps1)
# サーバー情報
$server = "<サーバーアドレス>"
$user = "<ユーザー名>"
$keyPath = "C:\Users\<ユーザー名>\.ssh\id_rsa"
# コマンド
$command = "sudo reboot"
# 実行
ssh -i $keyPath $user@$server $command
スクリプトの実行方法
スクリプトを保存したディレクトリに移動。
cd <スクリプトの親ディレクトリ>
PowerShellで以下を実行します。
./reboot_server.ps1
まとめ
この記事では、WindowsからLinuxサーバーを操作する際に必要な公開鍵認証やPowerShellスクリプトの作成手順を解説しました。
Discussion