Ubuntu 24.04 LTSをWindows 11上で動かす その5 SSHで接続する

Ubuntu
スポンサーリンク

前回はWindows Subsystem for Linux (WSL2)に導入したUbuntu 24.04 LTSでターミナル多重化ソフト(byobu + tmux)を設定してみました。

このとき使用したターミナルはWindows Terminalでした。Windows Terminalもよくできているのですが、やはり慣れた従来のターミナルを利用したいという方も居ると思います。

そこで今回はSSHでつなげてPuTTYを使ってみたいと思います。

スポンサーリンク

SSHとPuTTY

SSH(Secure Shell)とはLinuxをはじめとするUnix系のシステムに安全にリモートで接続するための仕組み(プロトコル)です。

WindowsからLinuxに接続する場合に標準的に使われるのがこのSSHです。

WindowsでSSHを使ってLinuxに接続するためには、専用のクライアントソフトを使用します。

私の場合はいつもPuTTYと呼ばれるフリーソフトの日本語対応版を使っています。

https://www.ranvis.com/putty”

WSL2のLinuxへの接続にもPuTTYを利用します。上記のページからダウンロードして7zファイルを展開しておきましょう。なお7zファイルは7-Zipで展開できます。

スポンサーリンク

SSHサーバの設定

WSL2(Ubuntu)を操作してSSHサーバを設定します。

インストール

まずはSSHサーバとしてOpenSSHを導入します。

sudo apt install openssh-server

エラーなくインストールできるはずです。

SSHサーバの起動

SSHサーバ(OpenSSH)をインストールしたら起動しましょう。

sudo systemctl start ssh

とりあえずデフォルトの設定のままでOKです。

ステータスを確認して「active (running)」になっていることを確認しましょう。

$ sudo systemctl status ssh
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/usr/lib/systemd/system/ssh.service; disabled; preset: enabled)
     Active: active (running) since Tue 2024-12-10 12:35:35 JST; 1s ago
TriggeredBy: ● ssh.socket
       Docs: man:sshd(8)
             man:sshd_config(5)
    Process: 403024 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
   Main PID: 403026 (sshd)
      Tasks: 1 (limit: 38457)
     Memory: 2.4M ()
     CGroup: /system.slice/ssh.service
             └─403026 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"

12月 10 12:35:35 baron systemd[1]: Starting ssh.service - OpenBSD Secure Shell server...
12月 10 12:35:35 baron sshd[403026]: Server listening on :: port 22.
12月 10 12:35:35 baron systemd[1]: Started ssh.service - OpenBSD Secure Shell server.

IPアドレスの確認

SSHで接続する場合には通常はSSHサーバが動作しているLinuxのIPアドレス(あるいはホスト名)が必要になります。

Ubuntuでは次のコマンドでIPアドレスを確認できます。

$ hostname -I
172.21.92.66

この例ではIPアドレスは「172.21.92.66」となります。
:::

以前はWSL2のIPアドレスはWSL2を起動する事に変化しました。しかし、2024年12月時点では、何度かUbuntuを起動し直して見たところ、WSL2(Ubuntu)のIPアドレスはかわらないようでした。

ただ、WSL2のIPアドレスが変わった場合に対応できるように、WSL2を起動しているWindowsからは「localhost」でWSL2側にアクセスできるようになっています。

SSHクライアントの設定

SSHクライアントは上でダウンロードしたPuTTYを利用しますが、事前に公開鍵認証の準備をしておきましょう。

ちょっと面倒ですが設定しておくとSSH接続が楽になり、利便性が上がります。

パスワード認証よりもセキュリティ的にも強固になります。

Windows上で公開鍵・秘密鍵ペアを作成する

公開鍵・秘密鍵のペアの生成にはPuTTYに付属していたPuTTYgen(puttygen.exe)を使用します。PuTTYgenを実行すると次のような画面が現れます。

公開鍵・秘密鍵のペアを作成する場合は、生成する鍵の種類として「EdDSA(Ed25519)」を選択してから「生成」ボタンを押します。

公開鍵・秘密鍵の生成

従来では生成する鍵の種類として「RSA」が使われてきましたが、最近では「Ed25519」のほうがセキュリティ強度が高く、オススメのようです。

「生成」ボタンを押したらキーの生成が始まりますので、「鍵」のエリアの上でマウスを適当に動かしましょう。マウスの動きを使ってkey必要な乱数を生成しているようです。

公開鍵・秘密鍵の生成中

公開鍵・秘密鍵の生成が完了すると次のような画面になります。

生成した公開鍵と秘密鍵の保存

「鍵のコメント」はこのキーを利用するクライアント(Windowsマシン)の名前などにしておくとよいでしょう。

生成した秘密鍵を安全な場所でのみ利用するでしたら「鍵のパスフレーズ」は空欄のままでも構いませんが、そうでない場合は安全のため入力しておいた方がよいと思います。もちろん「パスフレーズの確認」の欄にも同じパスフレーズを入力しておきます。

コメントとパスフレーズの設定が終わったら、「秘密鍵を保存」で秘密鍵をファイルに保存します。ここでは秘密鍵をid_ed25519.ppkとして保存したとします。

最後にOpenSSH用の公開鍵(赤枠で囲った部分のテキスト)をすべてテキストファイルにコピーしておきます。ここではデスクトップのpublickey.txtにコピーしたとします。

公開鍵をWSL2(Ubuntu)にコピーする

WSL2ではWindowsからWSL2のストレージへのアクセスが簡単になっています。

Windowsでエクスプローラーを起動すると左側のナビゲーションウィンドウにLinuxが表示され、その下にUbuntuがあるはずです。

エクスプローラに表示されるWSL2のストレージ

エクスプローラーでナビゲーションウィンドウが表示されない場合は、エクスプローラーのメニューから「表示」→「ナビゲーションウィンドウ」を選択してください。

そしてさきほど保存したpublickey.txtをUbuntuのホームディレクトリ(homeの下のユーザ名のディレクトリ)にドラッグアンドドロップしてコピーします。

Ubuntuのホームディレクトリにコピー

コピーした公開鍵をSSHの認証ファイルに追加する

ここはWSL2(Ubuntu)での作業になります。

先ほどコピーしたテキストファイル(publickey.txt)を、ホームディレクトリの「.ssh/authorized_keys」ファイルに追記します。

なお、「.sshディレクトリ」がないときは、自分で作成する必要がありますが、パーミッションは「700」とする必要がある点に注意してください。

同様にauthorized_keysファイルのパーミッションは「600」とする必要があります。

mkdir –p .ssh
chmod 700 .ssh
cat publickey.txt >> .ssh/authorized_keys
chmod 600 .ssh/authorized_keys

PuTTYで公開鍵認証を使う設定を行う

またWindowsでの作業に戻ります。

PuTTY(putty.exe)を起動して接続の設定画面で、左側のカテゴリで「接続→データ」を選択して「自動ログインのユーザ名」にWSL2(Ubuntu)でのアカウント名を入力します。

ユーザ名の指定 8

つづいて左側のカテゴリで「接続→SSH→認証→クレデンシャル」と選択して、「認証のための秘密鍵ファイル」に先ほど保存した秘密鍵(id_ed25519.ppk)を設定します。

秘密鍵の指定

最後に左側で「セッション」を選んで、接続するホスト名に「localhost」を入力します。

ホスト名の指定とセッションの保存

また、保存済みセッション一覧に適当な名前(Ubuntu@WSL2など)を入力して「保存」を選択します。

セッションとして保存しておくと、次回以降同じ設定を簡単に呼び出せるようになります。

SSHで接続

ようやく接続です。

PuTTYを実行し、先ほど保存したセッションを読み込んだのち「開く」を選択しましょう。

保存してあるセッションで接続

これでPuTTYがWSL2のSSHサーバに接続しに行きます。初回は次のようなメッセージが表示されるので「受け入れる」を選択します。

サーバのホスト鍵の受け入れ

これはPuTTYが知らないSSHサーバに接続したことを示しています。

受け入れる」を選択すると、先ほど設定した公開鍵と秘密鍵による認証が行われ、ログインできるはずです。

SSHで接続

前回の記事で紹介したbyobuを有効にしていれば、sshで接続した状態でもbyobuが使えます。

UbuntuをWindows11上で動かす その4: ターミナルを多重化する
回はWindows Subsystem for Linux (WSL2)の使い勝手を向上すべく、byobuとscreenを導入してターミナルを多重化してみます。Windows Terminalで起動しているシェルでbyobuを有効にして見たところ、全く問題なく使用することができました。Windows Terminalにもタブやペイン機能がありますが、byobunはそれとはまた違った便利さがあると思います。

なおフォントなどが見にくいですが、これは後ほど調整します。

PuTTYの設定の調整

これで接続できるようになったわけですが、PuTTYのデフォルトのままだと使いにくいところがあるので、設定を調整していきましょう。

まずPuTTYの画面で保存してあるWSL2用のセッション情報を読み込んでおきます。

作成済みのセッションの読み込み

続いて左側で「端末」→「ベル」を選んで、ベルのならしかたの設定で「なし (ベルは無効)」を選択しておきます。これは設定によってはビーブ音がうるさい場合があるからです。

ベルの無効化

次は左側で「端末」→「高度な設定」を選んで、「アプリケーションキーパッドモードを無効にする」を選択します。これは、vi等のアプリケーションでテンキーを使えるようにするためです。

アプリケーションキーパッドモードの無効化

次に見栄えを設定します。

左側で「ウィンドウ」を選択して、「桁」と「行」を変更します。昔はUnixのターミナル画面といえば横80文字というのが普通でしたが、ディスプレイの高解像度化が進んだ最近では狭すぎるので120ぐらいにすると良いでしょう。

ウィンドウサイズの変更

「ウィンドウ」→「外観」ではフォントを設定しておきます。自分の好みに応じてフォントやフォントサイズを変更しましょう。

フォントの変更

ここでは文字を見分けやすいUDEV Gothicフォントにしてみました。

GitHub - yuru7/udev-gothic: UDEV Gothic は、ユニバーサルデザインフォントのBIZ UDゴシックと、 開発者向けフォントの JetBrains Mono を合成した、プログラミング向けフォントです。
UDEV Gothic は、ユニバーサルデザインフォントのBIZ UDゴシックと、 開発者向けフォントの JetBrains Mono を合成した、プログラミング向けフォントです。 - yuru7/udev-gothic

「接続」→「データ」では、「端末タイプを表す文字列」に「putty-256color」を設定します。

端末タイプの変更

すべての設定が終わったら「セッション」に戻り、保存をします。

セッションの保存

これで次回からは作成したセッションを使うと、今回設定した内容でPuTTYがSSH接続します。

タスクバーのPuTTYを右クリックして作成したセッションをピン留めしておけば、さらに簡単にWSL2にSSH接続できます。

文字化け対策

上記の設定で日本語も問題なく使えるはずですが、使用しているbashの設定によっては日本語が文字化けしてしまうことがあるようです。

このような場合は、ホームディレクトリに「.inputrc」というファイルを作成し、下記の三行を記載してください。

set input-meta on
set convert-meta off
set output-meta on

今回インストールしたUbuntu 24.04LTSではとくに問題が発生していないため、この設定は行っていません。

WSL2へのSSH接続の課題

SSH接続をすることでWSL2で使い慣れたターミナルソフトPuTTYを使うことができます。

しかし最大の課題は、WSL2のウィンドウ(Windows Terminal)を終了するとSSH接続していても、WSL2が自動終了してしまい、SSHの接続が切れてしまう、ということです。

SSH接続していてもWSL2が終了してしまう

したがって、SSHサーバを起動したらWSL2のウィンドウ(Windows Terminal)は最小化するなりして放置しておく必要があります。

これでは使い勝手が悪いので、この問題は別の機会に対策をしてみたいと思います。

まとめ

今回はWindows Subsystem for Linux 2上のUbuntuにSSHサーバを導入して、SSHで接続できるようにしました。

WindowsからWSL2へはlocalhostを指定するとフォワーディングされるためIPアドレスを気にせずにSSH接続できます。

これで使い慣れたターミナルソフトPuTTYを使ってWSL2を操作できるようになります。ただ、手動でSSHサーバを起動しておく必要があるのが面倒な点です。

次回はNASによるネットワークドライブにWSL2からアクセスしてみたいと思います。

コメント

タイトルとURLをコピーしました