WindowsからAlmaLinuxへSSH接続する|操作する端末とユーザーを区別しよう
Windows 11のPowerShellから、VirtualBox上のAlmaLinux 9へSSHで接続します。NATのポート転送、SSHサーバー、初回の接続先確認、パスワード入力、ログアウトまで、操作場所を分けて進めます。
学習ガイドの目次 第3回 / 全4回
目的別ガイド
WindowsのPowerShellからLinuxに接続し、labuserとして操作してWindowsへ戻れる。
前提:第2回「Linuxをインストールする」までの設定が済んでいること。
この記事の目次
同じ画面でも、操作するコンピューターは変わる
第2回で作った仮想マシンに、今度はWindowsから接続します。SSHは、通信を暗号化して別のコンピューターにログインし、コマンドを実行するための仕組みです。WindowsのPowerShellで接続を始めても、接続後に入力するLinuxコマンドは仮想マシンの中で動きます。
| 操作する場所 | 使うアカウント |
|---|---|
| 接続前のWindows PowerShell | 現在Windowsにサインインしているユーザー |
| VirtualBoxで開いたLinuxの画面 | 第2回で作った labuser |
| SSHで接続した後の画面 | 同じLinuxの labuser |
この実習では通常の操作を labuser で行い、管理者権限が必要なコマンドに sudo を付けます。Linuxの管理者権限をroot権限と呼びます。以下の「入力」には、画面に表示される $ や PS C:\…> を含めていません。
Windowsの2222番ポートから、Linuxの22番ポートへ転送する
ポート番号は、接続先のサービスを指定するための番号です。SSHサーバーは標準でTCPの22番ポートを使います。今回はVirtualBoxのポートフォワーディング(ポート転送)を設定し、Windowsの127.0.0.1:2222への接続を、Linuxの22番ポートへ転送します。
- 第2回の仮想マシンが「電源オフ」になっていることを確認します。起動中ならLinuxから正常にシャットダウンします。
- VirtualBoxマネージャーで対象の仮想マシンの「設定(Settings)」を開き、「ネットワーク(Network)」の「アダプター1(Adapter 1)」を選びます。
- 割り当てが「NAT」であることを確認し、「ポートフォワーディング(Port Forwarding)」を開きます。見つからないときは設定画面をExpertモードに切り替え、詳細項目を確認します。
- 次のルールを追加して保存します。同じルールが既にあれば、値の確認だけで進めます。
| 項目 | 設定値 |
|---|---|
| 名前 | ssh |
| プロトコル | TCP |
| ホストIP | 127.0.0.1 |
| ホストポート | 2222 |
| ゲストIP | 空欄(この実習ではDHCPを使用) |
| ゲストポート | 22 |
ホストはVirtualBoxを動かすWindows、ゲストはその中で動くLinuxです。127.0.0.1は、通信するコンピューター自身を表すループバックアドレスです。このホストIPの設定により、SSH接続を受け付ける範囲をWindows PC自身に限定します。ホストIPを空欄や 0.0.0.0 に変えず、アダプターもNATのまま使います。
設定の根拠:Oracle公式・NATのポート転送
Linux側でSSHサーバーを準備する
仮想マシンを起動し、VirtualBoxで開いたLinuxの画面で labuser にログインします。このテキスト画面で貼り付けが使えない場合は、コマンドを手入力します。SSH接続を受け付けるOpenSSHサーバーと、ファイアウォールを管理するfirewalldがインストールされているか確認します。
- 実行場所
- Linux(VirtualBoxの画面)
- アカウント
- labuser
- 権限
- 通常
- 作業ディレクトリ
- ~
rpm -q openssh-server firewalld両方の名前とバージョンが出れば導入済みです。is not installed があった場合だけ、次を実行します。
- 実行場所
- Linux(VirtualBoxの画面)
- アカウント
- labuser
- 権限
- sudo
- 作業ディレクトリ
- ~
sudo dnf install openssh-server firewalldsudoでパスワードを求められたら、Linuxの labuser のパスワードを入力します。入力中の文字は画面に表示されません。インストールするパッケージの確認が出たら、内容を確認して y と入力します。
- 実行場所
- Linux(VirtualBoxの画面)
- アカウント
- labuser
- 権限
- sudo
- 作業ディレクトリ
- ~
sudo systemctl enable --now sshd firewalld- 実行場所
- Linux(VirtualBoxの画面)
- アカウント
- labuser
- 権限
- 通常
- 作業ディレクトリ
- ~
systemctl is-active sshd
systemctl is-active firewalldactive active
enable --nowは、サービスを今すぐ起動し、次にLinuxを起動したときも自動で動くよう設定します。active は実行中を示します。どちらかが実行中にならなければ、記事末尾のログ確認に進んで原因を調べます。
通信に適用されているゾーンを確認し、SSHを許可する
firewalldのゾーンは、許可する通信などをまとめた設定です。Linuxがネットワークに接続するための接続口をネットワークインターフェースと呼びます。まず、このインターフェースにどのゾーンの設定が適用されているか調べます。
- 実行場所
- Linux(VirtualBoxの画面)
- アカウント
- labuser
- 権限
- sudo
- 作業ディレクトリ
- ~
sudo firewall-cmd --get-active-zonespublic interfaces: enp0s3
この例の enp0s3 はインターフェース名、public は適用されるゾーン名です。以下の各コマンドの public を、実際に表示されたゾーン名に合わせます。何も出ない場合は第2回のネットワーク接続を確認してください。
- 実行場所
- Linux(VirtualBoxの画面)
- アカウント
- labuser
- 権限
- sudo
- 作業ディレクトリ
- ~
sudo firewall-cmd --zone=public --query-service=ssh
sudo firewall-cmd --permanent --zone=public --query-service=ssh1行目は現在有効な設定、--permanent を付けた2行目は再起動後も使う永続設定を調べます。両方が yes ならSSHは許可されています。どちらかが no なら、次で永続設定を変更し、--reload で現在の動作にも反映します。
- 実行場所
- Linux(VirtualBoxの画面)
- アカウント
- labuser
- 権限
- sudo
- 作業ディレクトリ
- ~
sudo firewall-cmd --permanent --zone=public --add-service=ssh
sudo firewall-cmd --reloadsuccess を確認したら、上の確認コマンドを再実行し、両方が yes になったことを確かめます。ALREADY_ENABLED は既にその許可があるという意味です。
接続先を確かめるため、ホスト鍵のフィンガープリントを調べる
SSHサーバーは、自分を識別するためのホスト鍵を持ちます。ホスト鍵には秘密鍵と公開鍵があり、秘密鍵はサーバー側で管理します。
ホスト鍵のフィンガープリントは、公開鍵から計算した確認用の値です。鍵そのものではなく、手元で確認した公開鍵と接続先が提示する公開鍵が一致するかを確かめるために使います。後で入力する labuser のパスワードは、ログインするユーザーを認証するためのものです。
まずVirtualBoxで開いたLinuxの画面で、以下を実行します。このLinuxのホスト鍵を基準にして、Windowsからの接続時に表示される値を照合します。
- 実行場所
- Linux(VirtualBoxの画面)
- アカウント
- labuser
- 権限
- 通常
- 作業ディレクトリ
- ~
ssh-keygen -l -f /etc/ssh/ssh_host_ed25519_key.pub256 SHA256:〈公開鍵から計算された値〉 … (ED25519)
このコマンドは .pub ファイルの公開鍵を読み、フィンガープリントを表示します。ED25519 は鍵の方式名です。SHA256:で始まる文字列を、後でWindows側の表示と比較できるよう書き留めます。
WindowsでSSHクライアントを確認
WindowsのスタートメニューからPowerShellを通常の権限で開きます。
- 実行場所
- Windows(PowerShell)
- アカウント
- 現在のWindowsユーザー
- 権限
- 通常
ssh -VOpenSSHを含むバージョン情報が出れば準備できています。「認識されません」と出る場合だけ、PowerShellを管理者として開き直して次を実行します。
- 実行場所
- Windows(PowerShell)
- アカウント
- Windowsの管理者ユーザー
- 権限
- 管理者
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0導入後は通常のPowerShellに戻り、ssh -Vを再確認します。会社管理PCで導入が制限されている場合は、管理者に確認してください。この実習でWindows側に入れる機能は OpenSSH Client です。
Windowsから接続して、Linuxのユーザーを確かめる
- 実行場所
- Windows(PowerShell)
- アカウント
- 現在のWindowsユーザー
- 権限
- 通常
ssh -p 2222 labuser@127.0.0.1-p 2222 は接続先のポート番号、labuser はLinuxのユーザー名です。Windowsの127.0.0.1:2222に接続すると、VirtualBoxがLinuxの22番ポートへ転送します。初回は、接続先のホスト鍵を登録してよいか尋ねられます。
ED25519 key fingerprint is SHA256:〈接続先の公開鍵から計算された値〉. Are you sure you want to continue connecting (yes/no/[fingerprint])?
VirtualBoxで開いたLinuxの画面で確認した値と、Windowsに表示された値を比較します。両方の SHA256: で始まる文字列が完全に一致したら、yes と入力してEnterを押します。異なる場合は no で接続を中止し、対象の仮想マシンと転送設定を確認します。WindowsにECDSAやRSAと表示された場合は、下記をLinuxの画面で実行し、同じ鍵の方式のフィンガープリントを比較します。
- 実行場所
- Linux(VirtualBoxの画面)
- アカウント
- labuser
- 権限
- 通常
- 作業ディレクトリ
- ~
ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub
ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub続いてパスワードを求められたら、Linuxのlabuserのパスワードを入力します。WindowsのPINではありません。文字や * が表示されないのは通常の動作です。
接続後に入力するコマンドは、Linux側で実行されます。次の2つで、操作しているユーザーとコンピューターを確認しましょう。
- 実行場所
- Linux(SSHで接続中)
- アカウント
- labuser
- 権限
- 通常
- 作業ディレクトリ
- ~
whoami
hostnamelabuser linux-lab
whoami はLinux側の実行ユーザー、hostname は接続先のLinuxのホスト名を表示します。
Windowsへ戻る・接続できないときの確認
- 実行場所
- Linux(SSHで接続中)
- アカウント
- labuser
- 権限
- 通常
- 作業ディレクトリ
- ~
exit接続終了の表示が出て、PS C:\…>などWindowsの入力待ちに戻ります。exitでSSHからログアウトした後も、仮想マシンは動き続けます。再び接続するときは、Windowsで先ほどの ssh -p 2222 labuser@127.0.0.1 を実行します。
| 症状 | 最初に見る場所 |
|---|---|
Connection refused/接続が切れる/応答しない | 仮想マシンの起動、2222→22のポート転送、Linuxのsshdが active か、適用されたゾーンでSSHが許可されているかの順に確認します。 |
Permission denied | 接続コマンドのユーザー名が labuser かを確認します。VirtualBoxで開いたLinuxの画面でも、そのユーザー名とパスワードでログインできるか試します。 |
sudoを使えない | 第2回で labuser に管理者権限を付けたか確認します。必要なのはLinux側の権限です。 |
| ホスト鍵が変わったという警告 | 仮想マシンの再作成・復元をしたか確認し、VirtualBoxで開いたLinuxの画面でホスト鍵のフィンガープリントを調べ直します。鍵が変わった理由を確認せず、登録情報を削除して接続を続けないでください。 |
SSHサーバーが起動できないときは、VirtualBoxで開いたLinuxの画面からログを確認できます。末尾のエラー行が手がかりです。
- 実行場所
- Linux(VirtualBoxの画面)
- アカウント
- labuser
- 権限
- sudo
- 作業ディレクトリ
- ~
sudo journalctl -u sshd -n 20 --no-pager- WindowsからSSH接続し、Linuxのlabuserとして操作できた
- 初回接続でホスト鍵のフィンガープリントを照合した
- whoamiとhostnameの結果を確認した
- exitでWindowsへ戻れた
次は、このSSH接続を使ってApacheを動かし、Windowsのブラウザーからページを表示します。
できたことを確認
- SSH接続後のwhoamiがlabuserになる
- hostnameがlinux-labになる
- exitでWindowsの入力待ちに戻れる
参考資料・対象環境
- Oracle VirtualBox 7.2 User Guide:Virtual Networking
- Oracle VirtualBox 7.2 User Guide:Working with Virtual Machines
- RHEL 9:Using secure communications between two systems with OpenSSH
- RHEL 9:Configuring firewalls and packet filters
- Microsoft Learn:OpenSSH for Windowsの概要と導入
- OpenSSH:ssh-keygenマニュアル(公開鍵のフィンガープリント表示)
この教材の対象と確認状況
Windows 11(Intel / AMDの64bit PC)、VirtualBox 7.2系、AlmaLinux 9系を対象にしています。2026年11月8日時点の公式資料を確認して作成しています。画面名はバージョンや表示言語で異なる場合があります。
掲載した出力は読み方を示す表示例です。この版はWindows実機で全手順を通した動作確認は未実施です。研修で使用する前に、ご利用のPC環境で事前確認をお願いします。
AZWorkが独自に構成した実習ガイドです。体系的に学ぶ参考資料として、LPI-JapanのLinuxサーバー構築標準教科書もご覧ください。