📄

WindowsからLinuxサーバーをコマンドで操作!

2025/01/16に公開

今回は、WindowsのPowerShellからLinuxサーバーのコマンドを実行し、
サーバーを再起動する方法を解説します。
この記事では、特に自動化にフォーカスし、
再起動時のパスワード入力を不要にする設定や
公開鍵認証の設定方法をわかりやすく説明します。

手順の概要

  1. sudoコマンド実行時のパスワード入力を不要にする
  2. SSH接続を公開鍵認証にする
  3. 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を使用して公開鍵をサーバーに転送

  1. WinSCPでサーバーに接続
  2. 公開鍵(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