このページの目次

OpenSSHによるリモートアクセス環境の構築

この記事では、いよいよSSHによるリモートアクセスを行います。 SSHに準拠したソフトウェアである OpenSSH をインストールし、

  1. Linux PC(その1)からLinux PC(その2)
  2. Linux PC(その1)からWindows PC
  3. Linux PC(その2)からLinux PC(その1)
  4. Windows PCからLinux PC(その1)

の4通りの組み合わせで接続してみましょう。

なお、この記事の解説ではそれぞれのPCを以下のコンピュータ名で表記しています。

コンピュータ名 PCの種類
hawk Linux PC(その1)
※Linux Mint
tiger Linux PC(その2)
※MX Linux
wolf Windows PC
※Windows 11

この記事で実施する作業の概要

この記事で実施する作業の概要は以下の通りです。

ファイアウォールの有効化

最初に行う作業はファイアウォールの有効化です。 なお、すでに有効化されていれば作業は不要です。

OpenSSHサーバのインストール

次にOpenSSHサーバのインストールを行います。 OpenSSHは、

  1. OpenSSH クライアント(他のPCへ接続するための機能)
  2. OpenSSH サーバ(他のPCからの接続を受け入れるための機能)

に分かれますが、Linux Mint / MX Linux / Windows 11 / Windows 10ともにOpenSSHクライアントは最初からインストールされています。

つまり、インストールするのはOpenSSHサーバのみとなります

鍵ペアの生成

インストールの次に行う作業は鍵ペアの生成です。 OpenSSHは公開鍵暗号による通信を行います。 そのため、秘密鍵と公開鍵の鍵ペアが必要になります。

authorized_keysの作成

公開鍵暗号による通信を行うということは、事前に接続先に公開鍵を渡しておく必要があるということです。

OpenSSHでは、接続元から渡された公開鍵は authorized_keys という名前のファイルに格納しなくてはなりません。

  
authorized_keys には複数の公開鍵を格納することができます。

例えば、今回の記事で想定している、

コンピュータ名
hawk
tiger
wolf

というPCの構成であれば、それぞれのPCが持つべき authorized_keys の内容は以下の表のようになります。

コンピュータ名 authorized_keysの内容
hawk ・tigerの公開鍵
・wolfの公開鍵
tiger ・hawkの公開鍵
・wolfの公開鍵
wolf ・hawkの公開鍵
・tigerの公開鍵

ただし、上の表のような公開鍵の配布は面倒です。 そこで今回は、以下のように自分自身の公開鍵も持つようにします

コンピュータ名 authorized_keysの内容
hawk ・hawkの公開鍵
・tigerの公開鍵
・wolfの公開鍵
tiger ・hawkの公開鍵
・tigerの公開鍵
・wolfの公開鍵
wolf ・hawkの公開鍵
・tigerの公開鍵
・wolfの公開鍵

つまり、3台のPCで全く同じ内容の authorized_keys を持てばいい、ということになります。

なお、今回はUSBフラッシュメモリ上に authorized_keys を作成します。 3台のPCの公開鍵が格納された authorized_keys です。

authorized_keysの配布

USBフラッシュメモリ上に作成した authorized_keys を全PC(hawk / tiger / wolf)に配布します。

サービスの自動起動設定

PCの起動時にOpenSSHサーバが自動的に開始されるよう設定を行います。 なお、すでに設定されていれば作業は不要です。

Linux Mint 不要
※インストール時に設定される
MX Linux 不要
※インストール時に設定される
Windows 11 サービスの自動起動の設定が必要
Windows 10 サービスの自動起動の設定が必要

パスワード認証でのSSH接続の禁止

パスワード認証でのSSH接続を禁止します。 パスワード認証とは、秘密鍵と公開鍵の鍵ペアは使わずに接続先のログインパスワードで認証する方式です。

これを禁止していない場合は、秘密鍵を持っていない人間もSSH接続に挑戦することができてしまいます。 つまり、接続先のログインパスワードを知ってさえいれば、秘密鍵を持っていなくてもログインできてしまうのです。

ファイアウォールのポート開放

SSHは22番ポートで通信を行います。 ファイアウォールの設定を変更し、22番ポートでの通信を許可します。

SSH接続によるログインのテスト

SSH接続によるログインのテストを行います。 以下の、

  1. hawkからtiger
  2. hawkからwolf
  3. tigerからhawk
  4. wolfからhawk

の4通りの組み合わせをテストします。

構築作業

では実際に構築作業を行いましょう。 SSH環境を構築し、接続テストを実施します。

ファイアウォールの有効化

最初に行う作業はファイアウォールの有効化です。 なお、すでに有効化されていれば作業は不要です。

hawkでの作業

  
hawkは Linux PC(その1) のことです。 Linux Mint を想定しています。

まず、ファイアウォールの状態を確認します。 端末を開き、キーボードから sudo ufw status と入力してEnterキーを押してください。


sudo ufw status

 
  
sudo コマンドであるためパスワードの入力を求められます。 (あなたの)ログインパスワードを入力してください。 なお、一度正しいパスワードを入力すると一定時間はパスワードの入力が免除されます。
  
多くのLinux系OSで、ファイアウォールの管理には ufw コマンドが利用されます。

以下のようにファイアウォールの状態が表示されます。

taro@hawk:~$ sudo ufw status
状態: 非アクティブ
taro@hawk:~$

非アクティブ、つまりファイアウォールは無効化されています。 では、有効化しましょう。

キーボードから sudo ufw enable と入力して、Enterキーを押してください。


sudo ufw enable

 

以下のようにファイアウォールが有効化されます。 ただし、メッセージの通りに再起動が必要です。

taro@hawk:~$ sudo ufw enable
ファイアウォールはアクティブかつPCの起動時に有効化されます。
taro@hawk:~$

ではここでPCを再起動してください

再起動したらログインして端末を開き、キーボードから sudo ufw status と入力してEnterキーを押してください。


sudo ufw status

 

以下のようにファイアウォールは有効化されています。

taro@hawk:~$ sudo ufw status
状態: アクティブ
taro@hawk:~$

これで作業は完了です。

tigerでの作業

  
tigerは Linux PC(その2) のことです。 MX Linux を想定しています。

tigerでも同様の作業が必要です。 端末を開き、キーボードから sudo ufw status と入力してEnterキーを押してください。


sudo ufw status

 
  
MX Linuxでも、ファイアウォールの管理には ufw コマンドを使用します。

以下のようにファイアウォールはすでに有効化されています。 何もすることはありません。

taro@tiger:~
$ sudo ufw status
Status: active
taro@tiger:~
$

wolfでの作業

  
wolfは Windows PC のことです。 Windows 11 を想定しています。

Windows PCではファイアウォールは最初から有効化されています。 何もすることはありません。

  
無効化している場合はここで有効化しておいてください。

OpenSSHサーバのインストール

次に行う作業はOpenSSHサーバのインストールです。

  
OpenSSHクライアントは最初からインストールされています。 インストールするのはOpenSSHサーバのみとなります。

hawkでの作業

  
hawkは Linux PC(その1) のことです。 Linux Mint を想定しています。

キーボードから sudo apt install openssh-server と入力して、Enterキーを押してください。


sudo apt install openssh-server

 
  
apt はコマンドラインからアプリケーションをインストールするためのコマンドです。 "openssh-server" がOpenSSHサーバのパッケージ名です。

以下のように続行するかどうかの確認が求められます。

taro@hawk:~$ sudo apt install openssh-server
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  ncurses-term openssh-sftp-server ssh-import-id
提案パッケージ:
  molly-guard monkeysphere ssh-askpass
以下のパッケージが新たにインストールされます:
  ncurses-term openssh-server openssh-sftp-server ssh-import-id
アップグレード: 0 個、新規インストール: 4 個、削除: 0 個、保留: 1 個。
751 kB のアーカイブを取得する必要があります。
この操作後に追加で 6,050 kB のディスク容量が消費されます。
続行しますか? [Y/n]

もちろん続行しますので y と入力してEnterキーを押してください。 以下のようにインストールが続行されます。

続行しますか? [Y/n] y

      .
      .
      .
   (省略)
      .
      .
      .

ssh.socket is a disabled or a static unit, not starting it.
ssh-import-id (5.11-0ubuntu1) を設定しています ...
ncurses-term (6.3-2ubuntu0.1) を設定しています ...
man-db (2.10.2-1) のトリガを処理しています ...
ufw (0.36.1-4ubuntu0.1) のトリガを処理しています ...
taro@hawk:~$

これで作業は完了です。

tigerでの作業

  
tigerは Linux PC(その2) のことです。 MX Linux を想定しています。

tigerでも同様の作業が必要です。 作業手順はhawkと変わらないため、実行結果のみを掲載します。

taro@tiger:~
$ sudo apt install openssh-server
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  libqt5positioning5 libqt5qml5 libqt5qmlmodels5 libqt5quick5 libqt5quickwidgets5
  libqt5webchannel5 libqt5webengine-data libqt5webenginecore5 libqt5webenginewidgets5 lsscsi
これを削除するには 'sudo apt autoremove' を利用してください。
以下の追加パッケージがインストールされます:
  openssh-sftp-server
提案パッケージ:
  molly-guard monkeysphere
以下のパッケージが新たにインストールされます:
  openssh-server openssh-sftp-server
アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 0 個。
523 kB のアーカイブを取得する必要があります。
この操作後に追加で 2,199 kB のディスク容量が消費されます。
続行しますか? [Y/n] y

      .
      .
      .
   (省略)
      .
      .
      .

Starting OpenBSD Secure Shell server: sshd.
Created symlink /etc/systemd/system/sshd.service → /lib/systemd/system/ssh.service.
Created symlink /etc/systemd/system/multi-user.target.wants/ssh.service → /lib/systemd/system/ssh.se
rvice.
man-db (2.11.2-2) のトリガを処理しています ...
ufw (0.36.2-1) のトリガを処理しています ...
taro@tiger:~
$

wolfでの作業

  
wolfは Windows PC のことです。 Windows 11 を想定しています。

Linux PCへのOpenSSHサーバのインストールが完了しました。 Windows PCにもOpenSSHサーバをインストールしましょう。

  
Windows 10の場合の作業手順はこちらで解説しています。
  
標準ユーザではOpenSSH サーバーのインストールは行えません。 標準ユーザでログインしている場合はログアウトし、管理者ユーザでログインし直してください。
1. スタートメニューを右クリックして設定を実行
1. スタートメニューを右クリックして設定を実行

上図のようにスタートメニューを右クリックし、表示されるコンテキストメニューから "設定" を実行します。

2. システムのオプション機能を選択
2. システムのオプション機能を選択

上図のように設定画面が開きます。 左の分類から "システム" を選択し、右側の詳細から "オプション機能" を選択します。

3. [機能を表示]ボタンを押す
3. [機能を表示]ボタンを押す

上図のように "オプション機能" に切り替わります。 右上にある[機能を表示]ボタンを押します。

『ユーザー アカウント制御』という画面が表示されますので、[はい]ボタンを押します。

4. OpenSSHクライアントはインストール済み
4. OpenSSHクライアントはインストール済み

上図のようにインストール済みの機能の一覧が表示されます。 OpenSSHクライアントはインストール済みであることがわかります。

では、新たな機能を追加するための画面に切り替えましょう。

5. 使用可能な機能を表示するリンクを押す
5. 使用可能な機能を表示するリンクを押す

上図のように "使用可能な機能を表示する" リンクを押します。

6. OpenSSHサーバを追加する
6. OpenSSHサーバを追加する

上図のように使用可能な機能の一覧が表示されます。 "OpenSSH サーバー" にチェックを入れ、[追加(1)]ボタンを押します。

7. インストールが始まり進捗が表示される
7. インストールが始まり進捗が表示される

上図のようにインストールが始まり進捗が表示されます。 何もすることはありません。 完了を待ちましょう。

8. インストールの完了
8. インストールの完了

上図のようにインストールが完了すると "追加済み、再起動が必要です" (または "追加済み") と表示されます。

[閉じる]ボタンを押して画面を閉じ、PCを再起動します。 これで作業は完了です。

  
"追加済み、再起動が必要です" ではなく "追加済み" と表示された場合は再起動は不要です。

鍵ペアの生成

続いての作業は鍵ペアの生成です。 秘密鍵と公開鍵の鍵ペアを生成しましょう。 Linux PC / Windows PCともに、鍵ペアの生成には ssh-keygen コマンドを利用します。

hawkでの作業

  
hawkは Linux PC(その1) のことです。 Linux Mint を想定しています。

キーボードから ssh-keygen -t ed25519 と入力してEnterキーを押してください。


ssh-keygen -t ed25519

 
  
ed25519 が鍵のアルゴリズム(計算方法のようなもの)です。 昔から使われているRSA方式よりも計算の負荷が少ないにも関わらずセキュリティは高い、という優れものだとか。

以下のように秘密鍵のファイルパスの入力を求められます

taro@hawk:~$ ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/taro/.ssh/id_ed25519):

初期値のままで構いませんので、そのままEnterキーを押してください。 以下のように続いてパスフレーズの入力を求められます

Enter file in which to save the key (/home/taro/.ssh/id_ed25519):
Created directory '/home/taro/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

パスフレーズが未入力でも鍵ペアは生成されますが、それではセキュリティ上の問題があります。 必ずパスフレーズを入力してください(確認のため2回の入力が必要です)。

以下のように鍵ペアが生成されます。

Your identification has been saved in /home/taro/.ssh/id_ed25519
Your public key has been saved in /home/taro/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:MutMU3iL88IvhR7w7ZFc8eAY2tUco2nZXxmnrHFC/nY taro@hawk
The key's randomart image is:
+--[ED25519 256]--+
|           o+. ..|
|        . +Boo .+|
|       o ==+= +..|
|    . ..o.o .B . |
|     o++So  . + E|
|      +B*.   . . |
|     o*+..       |
|     +=+.        |
|      o+o        |
+----[SHA256]-----+
taro@hawk:~$

メッセージを見ればわかるように、生成された鍵ペアは以下のファイルパスで保存されています。

秘密鍵 $HOME/.ssh/id_ed25519
公開鍵 $HOME/.ssh/id_ed25519.pub

無事、鍵ペアが生成されました。 これで作業は完了です。


鍵ペアが生成されたのはいいですが、ここで少し疑問があります

まず1つ目に、なぜパスフレーズを入力したのかです。 公開鍵暗号では公開鍵の素数で暗号化され、秘密鍵の2つの素数で復号されます。 共通鍵暗号のようにパスフレーズは用いないハズです。 なのになぜパスフレーズを入力したのでしょうか。

2つ目の疑問はSHA256:に続く、

MutMU3iL88IvhR7w7ZFc8eAY2tUco2nZXxmnrHFC/nY taro@hawk

というテキストです。 これは一体何なのでしょうか。

そして最後の3つ目の疑問が、

+--[ED25519 256]--+
|           o+. ..|
|        . +Boo .+|
|       o ==+= +..|
|    . ..o.o .B . |
|     o++So  . + E|
|      +B*.   . . |
|     o*+..       |
|     +=+.        |
|      o+o        |
+----[SHA256]-----+

というアスキーアート風のテキストです。 何なのでしょうかコイツは。

脱線してしまいますが、それらの疑問を解決していきましょう。

(1) パスフレーズを入力した理由


パスフレーズは秘密鍵の暗号化に使われます。 秘密鍵は2つの素数を持つファイルですが、それをそのまま保存してしまうのはセキュリティ上好ましくありません。

ネットワーク上に秘密鍵は流さなくても、PCを盗まれたり、ノートPCを紛失してしまう可能性はあります。

そこで鍵ペアの生成時に利用者にパスフレーズを入力させ、そのパスフレーズで秘密鍵を共通鍵暗号で暗号化して保存しています。 そうすることで、秘密鍵を盗まれても安全性が担保される、というわけです。

もちろん、パスフレーズで暗号化されているということは、利用時にパスフレーズでの復号が必要になるということでもあります。 リモートのPCにSSH接続するたびにパスフレーズの入力が必要になります。

パスフレーズは未入力にもできますが、その場合には秘密鍵は暗号化されずにそのまま保存されます。


(2) SHA256:に続くテキストの意味とは


SHA256:に続く、

MutMU3iL88IvhR7w7ZFc8eAY2tUco2nZXxmnrHFC/nY taro@hawk

というテキストは "フィンガープリント" と呼ばれるものです。 フィンガープリントの本来の意味は "指紋" ですが、鍵ペアのフィンガープリントも同じような意味を持ちます。

フィンガープリントの正体は、生成された鍵ペアの内容を一方向暗号で変換したハッシュ値です。 では、鍵ペアのハッシュ値であるフィンガープリントは何のために使われるのでしょうか。

フィンガープリントは改ざんを防ぐために使われます。 誰かがあなたのPCのハードディスクを取り出し、秘密鍵と公開鍵のペアをニセモノで差し替えたかもしれません。

そんな心配があるなら、鍵ペアのフィンガープリントを表示すればいいのです。 以下のようにssh-keygenコマンドはフィンガープリントを表示することもできます。

taro@hawk:~$ ssh-keygen -lf $HOME/.ssh/id_ed25519
256 SHA256:MutMU3iL88IvhR7w7ZFc8eAY2tUco2nZXxmnrHFC/nY taro@hawk (ED25519)
taro@hawk:~$

表示された現時点のフィンガープリントと鍵ペアの生成時のフィンガープリントが一致していれば、改ざんの心配はありません。 なお、

ssh-keygen -lf $HOME/.ssh/id_ed25519.pub

のように公開鍵のフィンガープリントを表示しても結果は同じです。 秘密鍵と公開鍵のフィンガープリントは全く同じになります。

ちなみに、ニセモノに差し替えられていた場合は秘密鍵のパスフレーズが異なることでしょう。 だから、フィンガープリントを比較するまでもなく差し替えられていることには気づくと思われますが。

なお、"鍵ペアを生成した時に表示されたフィンガープリントなんて覚えてない"、という方がほとんどでしょう。 そこで活躍するのが3つ目の疑問でもある "アスキーアート風のテキスト" です


(3) アスキーアート風のテキストの正体は


アスキーアート風のテキストである、

+--[ED25519 256]--+
|           o+. ..|
|        . +Boo .+|
|       o ==+= +..|
|    . ..o.o .B . |
|     o++So  . + E|
|      +B*.   . . |
|     o*+..       |
|     +=+.        |
|      o+o        |
+----[SHA256]-----+

ですが、実はコイツもフィンガープリントです。

1行で表される、

MutMU3iL88IvhR7w7ZFc8eAY2tUco2nZXxmnrHFC/nY taro@hawk

という "フィンガープリント" は覚えにくいため、覚えやすいようにアート風にしているものです。 正式名称は "ランダムアートイメージ" と呼ばれます。

以下のようにssh-keygenコマンドではランダムアートイメージを表示させることもできます。

taro@hawk:~$ ssh-keygen -vlf $HOME/.ssh/id_ed25519
256 SHA256:MutMU3iL88IvhR7w7ZFc8eAY2tUco2nZXxmnrHFC/nY taro@hawk (ED25519)
+--[ED25519 256]--+
|           o+. ..|
|        . +Boo .+|
|       o ==+= +..|
|    . ..o.o .B . |
|     o++So  . + E|
|      +B*.   . . |
|     o*+..       |
|     +=+.        |
|      o+o        |
+----[SHA256]-----+
taro@hawk:~$

フィンガープリントに関して色々書きましたが、実のところSSHにおいてはユーザが作成した鍵ペアのフィンガープリントには重要な用途はありません秘密鍵にパスフレーズを設定していれば差し替えを防ぐことができるためです

ですから、鍵ペア生成時のフィンガープリントやランダムアートイメージを覚えておく必要はありません。 どこかにメモを残しておく必要もありません。

  
複数人で秘密鍵を共有している場合は鍵ペアの差し替えが可能です。 なお、秘密鍵の共有などすべきではありませんが。

ただし、暗号化メールにおいては "なりすましを防ぐ" という役目があります。 この章で解説している "リモートアクセス" とは全く関係のない話ですが、ついでに説明しておきます。

暗号化メールでのフィンガープリント


暗号化メールでは、相手に事前に公開鍵を渡します。 メールで送信してもいいですし、ウェブサイトからダウンロードしてもらっても構いません。

その際に問題になるのが、相手に渡った公開鍵は本当にあなたの秘密鍵のペアなのか、ということです。

そこで登場するのがフィンガープリントです。 相手に渡った公開鍵のフィンガープリントが、あなたの鍵ペアのフィンガープリントと一致するかを確認すればいいだけです。

例えば、名刺のメールアドレスの横にフィンガープリントを印刷しておき相手にはそれと比較してもらう、など。


tigerでの作業

  
tigerは Linux PC(その2) のことです。 MX Linux を想定しています。

tigerでも鍵ペアを生成しましょう。 作業手順はhawkと変わらないため、実行結果のみを掲載します。

taro@tiger:~
$ ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/taro/.ssh/id_ed25519):
Created directory '/home/taro/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/taro/.ssh/id_ed25519
Your public key has been saved in /home/taro/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:2GiNvsu+0bSkiX6oLeKhVHtUnx8RomqgkVQ0J8kRI4o taro@tiger
The key's randomart image is:
+--[ED25519 256]--+
| o+O+.   . .     |
|+ oo=   . . .    |
|Eo .   o   .     |
|  o . o*. . .    |
| . . += So .     |
|  . ++ * .. .    |
| o ..o= o  .     |
|+ ooo..o         |
|oo.ooo*o         |
+----[SHA256]-----+
taro@tiger:~
$
  
当たり前ですが、フィンガープリントはhawkとは異なるものが表示されています。

wolfでの作業

  
wolfは Windows PC のことです。 Windows 11 を想定しています。

Windows PCでも鍵ペアはもちろん必要です。 まずは、コマンドプロンプトを開きましょう。

  
SSH接続に利用するユーザでの作業です。 管理者ユーザでログインし直す必要はありません。

キーボードのWindowsキー(Windowsキー) +Rを押します。

1. ファイル名を指定して実行
1. ファイル名を指定して実行

上図のように『ファイル名を指定して実行』ウィンドウが開きます。 名前(O)の欄に "cmd" と入力して[OK]ボタンを押します。

2. コマンドプロンプトが開く
2. コマンドプロンプトが開く

上図のようにコマンドプロンプトが開きますので、キーボードから ssh-keygen -t ed25519 と入力してEnterキーを押してください。


ssh-keygen -t ed25519

 

以下のように鍵ペアを生成します。

C:\Users\taro>ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
Enter file in which to save the key (C:\Users\taro/.ssh/id_ed25519):
Created directory 'C:\\Users\\taro/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in C:\Users\taro/.ssh/id_ed25519
Your public key has been saved in C:\Users\taro/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:AYqe8PPc8K7VLelwfnUYbZds0dfqV/GXLE3A/+UIMfM taro@wolf
The key's randomart image is:
+--[ED25519 256]--+
|      .     ... o|
|   . . .    +. ++|
|. . .   .    **.B|
| + .     .  o.EO*|
|  = .   S    *o+=|
|   + + . o  o + +|
|    o = = .. . . |
|     o = ..      |
|    ... o.       |
+----[SHA256]-----+

C:\Users\taro>

もちろん、こちらもフィンガープリントは異なります。

  
exit と打ち込むことでコマンドプロンプトを終了することができます。

wolfにも鍵ペアを準備できました。 作業はこれで完了です。

authorized_keysの作成

3台のPCそれぞれで鍵ペアを生成しました。 次に行うのは、生成された公開鍵(3台分)が格納された authorized_keys ファイルを作成する作業です。

なお、authorized_keys はUSBフラッシュメモリ上に作成します

hawkでの作業

  
hawkは Linux PC(その1) のことです。 Linux Mint を想定しています。

まずは、鍵ペアが置かれているディレクトリに移動します。 キーボードから cd $HOME/.ssh と入力してEnterキーを押してください。


cd $HOME/.ssh

 

以下のように $HOME/.ssh ディレクトリに移動します。

taro@hawk:~$ cd $HOME/.ssh
taro@hawk:~/.ssh$

では、公開鍵の内容を authorized_keys ファイルへ追記しましょう。 キーボードから cat id_ed25519.pub >> /media/taro/YAMADA_4G/authorized_keys と入力してEnterキーを押してください。


cat id_ed25519.pub >> /media/taro/YAMADA_4G/authorized_keys

 
  
USBフラッシュメモリが "/media/taro/YAMADA_4G" としてマウントされている場合の例です。 みなさんの環境に合わせて読み替えてください。

以下のように公開鍵の内容を /media/taro/YAMADA_4G/authorized_keys ファイルへ出力します。

taro@hawk:~/.ssh$ cat id_ed25519.pub >> /media/taro/YAMADA_4G/authorized_keys
taro@hawk:~/.ssh$

これでhawkの公開鍵が /media/taro/YAMADA_4G/authorized_keys に格納されました。 作業は完了です。

tigerでの作業

  
tigerは Linux PC(その2) のことです。 MX Linux を想定しています。

tigerでも同様の作業を行います。 作業手順はhawkと変わらないため、実行結果のみを掲載します。

taro@tiger:~
$ cd $HOME/.ssh
taro@tiger:~/.ssh
$ cat id_ed25519.pub >> /media/taro/YAMADA_4G/authorized_keys
taro@tiger:~/.ssh
$

wolfでの作業

  
wolfは Windows PC のことです。 Windows 11 を想定しています。

wolfでも同じ作業を行います。 作業手順はhawkとほぼ変わらないため、実行結果のみを掲載します。

C:\Users\taro>cd %HOMEPATH%\.ssh

C:\Users\taro\.ssh>type id_ed25519.pub >> D:\authorized_keys

C:\Users\taro\.ssh>
  
\ はバックスラッシュです。 バックスラッシュはUNIX系OSでは \(バックスラッシュ) として正しく表示されますが、Windows では ¥(円マーク) として表示されます。 どちらにしても、日本語キーボードからは ¥(円マーク) で入力します。
  
USBフラッシュメモリが D:ドライブ に割り当てられている場合の例です。 みなさんの環境に合わせて読み替えてください。
  
Windowsのコマンドプロンプトではファイルの中身は TYPE コマンドで表示します。

ではここで、以下のように実行して authorized_keys ファイルの中身を見ておきましょう。

C:\Users\taro\.ssh>type D:\authorized_keys
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILqRj/9MgjdaXFbj6ZwoJaR8HUM9Pez1iuICa5EwZlkm taro@hawk
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID2FjmFHEu2qI1Znh/YWyitdzWxSKWoDeuIVgw7cMAgX taro@tiger
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOyXhh8tOJs92i8Kol4j4kUHkdWgTNkL4YZhLhRiJDGN taro@wolf

C:\Users\taro\.ssh>

3つの公開鍵が格納されていることがわかります。 authorized_keys ファイルはこれで完成です。

authorized_keysの配布

3台のPCの公開鍵が格納された authorized_keys の準備ができました。 次に行うのは authorized_keys を全てのPCへ配布する作業です。

authorized_keys の配布先は鍵ペアが置かれている場所、つまり、$HOME/.ssh ディレクトリや %HOMEPATH%\.ssh フォルダです。

hawkでの作業

  
hawkは Linux PC(その1) のことです。 Linux Mint を想定しています。

まずは、鍵ペアが置かれているディレクトリへ移動しましょう。 キーボードから cd $HOME/.ssh と入力してEnterキーを押してください。


cd $HOME/.ssh

 

以下のように $HOME/.ssh ディレクトリに移動します。

taro@hawk:~$ cd $HOME/.ssh
taro@hawk:~/.ssh$

では、この場所に authorized_keys を複製します。 キーボードから cp /media/taro/YAMADA_4G/authorized_keys . と入力してEnterキーを押してください。


cp /media/taro/YAMADA_4G/authorized_keys .

 

以下のように authorized_keys がカレントディレクトリに複製されます。

taro@hawk:~/.ssh$ cp /media/taro/YAMADA_4G/authorized_keys .
taro@hawk:~/.ssh$

仕上げとして authorized_keys のパーミッションを変更します。 キーボードから chmod 600 authorized_keys と入力してEnterキーを押してください。


chmod 600 authorized_keys

 

以下のように authorized_keys のパーミッションを変更します。

taro@hawk:~/.ssh$ chmod 600 authorized_keys
taro@hawk:~/.ssh$

authorized_keys の配布はこれで完了です。

tigerでの作業

  
tigerは Linux PC(その2) のことです。 MX Linux を想定しています。

tigerでも同様の作業を行います。 作業手順はhawkと変わらないため、実行結果のみを掲載します。

taro@tiger:~
$ cd $HOME/.ssh
taro@tiger:~/.ssh
$ cp /media/taro/YAMADA_4G/authorized_keys .
taro@tiger:~/.ssh
$ chmod 600 authorized_keys
taro@tiger:~/.ssh
$

wolfでの作業

  
wolfは Windows PC のことです。 Windows 11 を想定しています。

wolfでも同様の作業を行います。 作業手順はhawkとほぼ変わらないため、実行結果のみを掲載します。

C:\Users\taro>cd %HOMEPATH%\.ssh

C:\Users\taro\.ssh>copy D:\authorized_keys .
        1 個のファイルをコピーしました。

C:\Users\taro\.ssh>

サービスの自動起動設定

PCの起動時にOpenSSHサーバが自動的に開始されるよう設定を行います。 なお、すでに設定されていれば作業は不要です。

hawkでの作業

  
hawkは Linux PC(その1) のことです。 Linux Mint を想定しています。

Linux Mintでは、OpenSSHサーバは自動起動するようにすでに設定されています。 何もすることはありません。

tigerでの作業

  
tigerは Linux PC(その2) のことです。 MX Linux を想定しています。

MX Linuxでも、OpenSSHサーバは自動起動するように初期状態で設定されています。 こちらも何もすることはありません。

wolfでの作業

  
wolfは Windows PC のことです。 Windows 11 を想定しています。

Windows 11 / Windows 10 ともに、OpenSSHサーバは自動起動されません。 設定を変更する必要があります。

  
標準ユーザではサービスの設定は変更できません。 標準ユーザでログインしている場合はログアウトし、管理者ユーザでログインし直してください。
  
"コントロールパネル" -> "Windows ツール" から "コンピュータの管理" を管理者として実行することもできます。 それなら管理者ユーザでログインし直す必要はありません。
1. スタートメニューを右クリックしてコンピュータの管理を実行
1. スタートメニューを右クリックしてコンピュータの管理を実行

上図のようにスタートメニューを右クリックし、表示されるコンテキストメニューから "コンピュータの管理" を実行します。

2. サービスをクリック
2. サービスをクリック

上図のようにコンピュータの管理画面が開きます。 左の分類にある "サービスとアプリケーション" -> "サービス" をクリックします。

3. OpenSSH SSH Serverをダブルクリック
3. OpenSSH SSH Serverをダブルクリック

上図のようにサービス画面が開きます。 一覧に表示されている "OpenSSH SSH Server" をダブルクリックします。

4. 自動起動を設定する
4. 自動起動を設定する

上図のように "OpenSSH SSH Serverのプロパティ" が表示されます。 スタートアップの種類(E)を "自動" に変更し、[開始(S)]ボタンを押します。

サービスが起動したら[OK]ボタンを押して画面を閉じましょう。

5. OpenSSHサーバが実行される
5. OpenSSHサーバが実行される

上図のように "OpenSSH SSH Server" が実行中になります。 また、スタートアップの種類も "自動" になっていることがわかります。

サービスに関する設定はこれで完了です。

パスワード認証でのSSH接続の禁止

パスワード認証でのSSH接続を禁止します。 秘密鍵を持っていない人間のSSH接続を防ぐための設定です

OpenSSHサーバの設定ファイルを修正することで、パスワード認証を禁止できます。 なお、PCやOpenSSHサーバを再起動するまでは設定は反映されません

hawkでの作業

  
hawkは Linux PC(その1) のことです。 Linux Mint を想定しています。

では、OpenSSHサーバの設定ファイルを修正しましょう。 設定ファイルのパスは、

/etc/ssh/sshd_config

です。

修正にはテキストエディタが必要です。 ここではnanoエディタを使って修正してみましょう。

  
nanoエディタは、Windowsのメモ帳のような感覚で操作できるテキストエディタです。

キーボードから sudo nano /etc/ssh/sshd_config と入力してEnterキーを押してください。


sudo nano /etc/ssh/sshd_config

 

以下のようにnanoエディタでファイルを開きます。

taro@hawk:~$ sudo nano /etc/ssh/sshd_config

nanoエディタが起動したら、ファイルを次のように修正します。 "PasswordAuthentication" の行を探し、先頭の # を外します。 さらに設定値を yes から no に変更しましょう。

  
執筆時点のバージョンのOpenSSHでは該当行は57行目でした。
  
nanoエディタでは、CTRL+Cキーを押すことでカーソルの現在位置を表示させることができます。
修正前
  1. #PasswordAuthentication yes
修正後
  1. PasswordAuthentication no

修正するのは、この1行だけです。 これで、パスワード認証でのSSH接続が禁止されます。

修正が完了したら、CTRL+Xキーを押してください。 保存するかどうかを聞かれますので y と入力します。

続いて、保存ファイル名を変更可能な状態になります。 ファイル名を変更してはいけませんので、そのままEnterキーを押してください。 ファイルが上書き保存されます。

これでOpenSSHサーバの設定ファイルの修正は完了です。 変更を反映させるため、PCを再起動してください

tigerでの作業

  
tigerは Linux PC(その2) のことです。 MX Linux を想定しています。

tigerでも同じ作業を行ってください。 作業手順はhawkと変わらないため、実行結果のみを掲載します。

taro@tiger:~
$ sudo nano /etc/ssh/sshd_config

設定ファイルの変更内容はhawkと全く同じです

修正前
  1. #PasswordAuthentication yes
修正後
  1. PasswordAuthentication no

変更を反映させるため、PCを再起動するのを忘れないでください

wolfでの作業

  
wolfは Windows PC のことです。 Windows 11 を想定しています。

wolfでも同様の作業を行います。 ただし、修正するためにはメモ帳を管理者権限で実行する必要があります

  
SSH接続に利用するユーザでの作業です。 管理者ユーザでログインし直す必要はありません。
管理者としてメモ帳を実行する
管理者としてメモ帳を実行する

上図のようにスタートメニューを開いて "メモ帳" のメニュー項目を表示し、右クリックから "管理者として実行" を選択します。

『ユーザー アカウント制御』という画面が表示されますので、管理者のパスワードを入力して続行してください。

なお、Windows PCではOpenSSHサーバの設定ファイルは、

C:\ProgramData\ssh\sshd_config

です。 メモ帳が起動したら、このファイルを開いて修正を行ってください。

  
C:\ProgramData はシステムフォルダであるため、開くダイアログには(標準設定では)表示されません。 その場合には入力欄にキーボードで "C:\ProgramData" のように入力してフォルダに移動してください。
 
  
開くダイアログの "ファイルの種類(T)" は "すべてのファイル" に変更してください。 OpenSSHサーバの設定ファイル sshd_config が表示されるようになります。
 

変更内容はhawkと全く同じです

修正前
  1. #PasswordAuthentication yes
修正後
  1. PasswordAuthentication no

修正が完了したら、CTRL+Sキーを押して保存してください。

変更を反映させるため、忘れずにPCを再起動してください

ファイアウォールのポート開放

続いてはファイアウォールのポートの開放です。 つまり、ファイアウォールに穴を開ける作業です。 SSHが利用する22番ポートの通信を許可します。

hawkでの作業

  
hawkは Linux PC(その1) のことです。 Linux Mint を想定しています。

では、22番ポートの通信を許可しましょう。 "22番ポートの通信を許可する" というルールを追加します。 キーボードから sudo ufw allow in from any to any port 22 と入力してEnterキーを押してください。


sudo ufw allow in from any to any port 22

 

以下のようにファイアウォールのルールが追加されます。

taro@hawk:~$ sudo ufw allow in from any to any port 22
ルールを追加しました
ルールを追加しました (v6)
taro@hawk:~$

これで作業は完了です。 なお、コマンドの引数の意味は以下の通りです。

- ufw コマンドの各引数の概要 -
allow 許可ルールを追加する
in 受信パケット
from any 全ての送信元
to any 全ての送信先
port 22 22番ポート

上の表のように、今回の例では送信元や送信先は限定していません。 そのため、細かな指定を省略して、

sudo ufw allow 22

としても同じ結果になります

ルールにない通信パケットはどうなるのか


ルールにない通信パケットはどう処理されるのでしょうか。 答えは "デフォルトの動作の設定による" です。

ファイアウォールのデフォルトの動作は以下のコマンドで確認することができます。

taro@hawk:~$ sudo ufw status verbose
状態: アクティブ
ロギング: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
新しいプロファイル: skip

To                         Action      From
--                         ------      ----
22                         ALLOW IN    Anywhere
22 (v6)                    ALLOW IN    Anywhere (v6)

taro@hawk:~$

上の例(hawk : Linux Mint)では、

incoming
※受信パケット
deny
※破棄
outgoing
※送信パケット
allow
※許可
routed
※ルーティングパケット
disabled
※無効

のように、ルールにない受信パケットは破棄される設定になっています。 なお、デフォルトの動作を変更する場合は以下のように実行します。

taro@hawk:~$ sudo ufw default allow incoming
[sudo] taro のパスワード:
デフォルトの incoming ポリシーは 'allow' に変更しました
(適用したい内容に基づいて必ずルールを更新してください)
taro@hawk:~$ sudo ufw status verbose
状態: アクティブ
ロギング: on (low)
Default: allow (incoming), allow (outgoing), disabled (routed)
新しいプロファイル: skip

To                         Action      From
--                         ------      ----
22                         ALLOW IN    Anywhere
22 (v6)                    ALLOW IN    Anywhere (v6)

taro@hawk:~$

tigerでの作業

  
tigerは Linux PC(その2) のことです。 MX Linux を想定しています。

tigerでももちろん22番ポートの開放が必要です。 作業手順はhawkと変わらないため、実行結果のみを掲載します。

taro@tiger:~
$ sudo ufw allow in from any to any port 22
Rule added
Rule added (v6)
taro@tiger:~
$

wolfでの作業

  
wolfは Windows PC のことです。 Windows 11 を想定しています。

wolfでもファイアウォールの設定変更が必要です。

  
SSH接続に利用するユーザでの作業です。 管理者ユーザでログインし直す必要はありません。
1. コントロールパネルを開く
1. コントロールパネルを開く

上図のようにスタートメニューをクリックし、キーボードから "control" と打ち込みます。 一覧に表示された "コントロールパネル" をクリックし、コントロールパネルを開きます。

2. Windows Defender ファイアウォールを開く
2. Windows Defender ファイアウォールを開く

上図のようにコントロールパネルが開きます。 表示方法を "小さいアイコン"(または "大きいアイコン") に切り替え、一覧から "Windows Defender ファイアウォール" を実行します。

3. 詳細設定をクリック
3. 詳細設定をクリック

上図のように "Windows Defender ファイアウォール" が開きます。 左にある "詳細設定" をクリックします。

『ユーザー アカウント制御』という画面が表示されますので、管理者のパスワードを入力して続行してください。

4. 受信の規則をクリック
4. 受信の規則をクリック

上図のように "セキュリティが強化された Windows Defender ファイアウォール" が開きます。 左にある "受信の規則" をクリックします。

5. 名前で並び替える
5. 名前で並び替える

上図のように受信の規則が表示されますので、見出しの "名前" をクリックして名前順で並び替えましょう。

6. OpenSSH SSH Server (sshd)を開く
6. OpenSSH SSH Server (sshd)を開く

上図のように一覧にある "OpenSSH SSH Server (sshd)" をダブルクリックします。

7. 詳細設定タブに切り替える
7. 詳細設定タブに切り替える

上図のように "OpenSSH SSH Server (sshd)のプロパティ" が表示されます。 詳細設定タブをクリックします。

8. プライベートとパブリックを許可する
8. プライベートとパブリックを許可する

上図のようにプライベートとパブリックにチェックを入れて[OK]ボタンを押します。

これでファイアウォールのポート開放の作業は完了です。

SSH接続によるログインのテスト

いよいよSSH接続によるログインのテストです。 以下の、

接続テスト
hawk から tiger
hawk から wolf
tiger から hawk
wolf から hawk

の4通りの組み合わせをテストします。

hawkでの作業

  
hawkは Linux PC(その1) のことです。 Linux Mint を想定しています。

まずは、hawkからtigerへのSSH接続です。 つまり、Linux Mint機からMX Linux機への接続です。

キーボードから ssh tiger.local と入力してEnterキーを押してください。


ssh tiger.local

 
  
コンピュータ名が "tiger" の場合の例です。 みなさんの環境に合わせて読み替えてください。 もちろん、IPアドレスで指定することもできます。
  
最近のLinux系OS(というよりUNIX系OS)では、 Avahi(アバヒ) アバヒ Avahi(アバヒ) と呼ばれるサービスが動作しています。 Avahiは "ゼロコンフィグレーション・ネットワーキング" のためのソフトウェアです。
  
Avahiが動作していれば、利用者が何も設定をしていなくても コンピュータ名 + ".local" で接続することができます。
  
Windows 11 / Windows 10 でも同等のソフトウェアが動作しているため、同じく コンピュータ名 + ".local" で接続することができます。

初回接続時には、以下のように接続を継続するかどうかの確認を求められます

taro@hawk:~$ ssh tiger.local
The authenticity of host 'tiger.local (192.168.0.106)' can't be established.
ED25519 key fingerprint is SHA256:kmbc7/99jOJgeXullIjkwygu//sbV564u4KSgYs89KM.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?

ここで重要なのが接続しようとしている相手が本物かどうか、ということです。 もしかしたら、悪意ある人間が仕立て上げたニセモノのPCかもしれません。

では、どうやって相手が本物かどうかを確認すればいいのでしょうか。 みなさんお気づきの通り、フィンガープリントがここで活躍します。

前述の鍵ペアの生成の説明の際に "SSHにおいてはユーザが作成した鍵ペアのフィンガープリントには重要な用途はない" と書きましたが、ホスト鍵のフィンガープリントは話が別です

  
ホスト鍵とは、OpenSSHサーバのインストール時に自動的に作成された鍵ペアです(Windowsではサービスの初回起動時に作成される)。 各ユーザが個人で使う鍵ペアではなく、OpenSSHサーバそのものの鍵ペアです。

ホスト鍵のフィンガープリントには重要な意味があり、接続先のコンピュータが本物かどうかを確認することができるのです。

では、実際に確認してみましょう。 接続先であるtigerのホスト鍵のフィンガープリントを表示します。 もちろん、tigerでの作業です。

tigerで端末を開き、キーボードから sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key と入力してEnterキーを押してください。


sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key

 

以下のようにフィンガープリントが表示されます。

taro@tiger:~
$ sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key
256 SHA256:kmbc7/99jOJgeXullIjkwygu//sbV564u4KSgYs89KM root@tiger (ED25519)
taro@tiger:~
$

うん大丈夫、フィンガープリントは一致していますね。 接続先がニセモノではないことが判明しましたので接続を継続しましょう。 yes と入力することで接続が継続されます

  
一定時間が経過した場合は yes と入力しても接続は失敗します。 その場合には再度接続を試みてください。
1. 秘密鍵のパスフレーズの入力が求められる
1. 秘密鍵のパスフレーズの入力が求められる

上図のように "秘密鍵のロック解除" というダイアログが表示されます。 秘密鍵(/home/taro/.ssh/id_ed25519)は共通鍵暗号で暗号化されているため、パスフレーズの入力を求められています。

ssh-keygen で鍵ペアを生成した時に入力したパスフレーズを入力してください。

パスフレーズが正しければ秘密鍵が復号され、以下のように接続が行われます。

Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'tiger.local' (ED25519) to the list of known hosts.
Linux tiger 6.1.0-40-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.153-1 (2025-09-20) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
You have no mail.
taro@tiger:~
$

やりました。 シェルプロンプトが "taro@tiger:~" と表示されています。 無事にtigerにSSH接続でログインすることができました。

接続テスト 結果
hawk から tiger ○ 成功
hawk から wolf -
tiger から hawk -
wolf から hawk -

ではSSH接続を切断しましょう。 キーボードから exit と入力してEnterキーを押してください。


exit

 

以下のようにSSH接続が切断され、tigerからログアウトします。

taro@tiger:~
$ exit
ログアウト
Connection to tiger.local closed.
taro@hawk:~$
  
キーボードのCTRL+Dキーを押すことでもログアウトできます。

初回接続時の接続先のホスト鍵のフィンガープリントをランダムアートイメージで表示するには


上で説明したように、初回接続時には接続先のホスト鍵のフィンガープリントが以下のように表示されます。

256 SHA256:kmbc7/99jOJgeXullIjkwygu//sbV564u4KSgYs89KM root@tiger (ED25519)

フィンガープリントが正しければ yes と入力して接続を継続します。

ただし "1行表示のフィンガープリント" では正しいかどうかの判断のための見比べが難しいです。 ランダムアートイメージで表示してくれればいいのに、とみなさん思うことでしょう。

もちろん、フィンガープリントをランダムアートイメージで表示させることもできます。 以下のようにオプション -o "VisualHostKey yes" を付けて ssh コマンドを実行するだけです。

ssh -o "VisualHostKey yes" tiger.local

一旦、no と入力して接続を中断し、上記のようにオプションを付けて再接続しましょう。 フィンガープリントがランダムアートイメージで表示されますので、接続先のホスト鍵のものと比較しましょう。

接続先のホスト鍵のフィンガープリントのランダムアートイメージは、

sudo ssh-keygen -vlf /etc/ssh/ssh_host_ed25519_key

とすることで表示させることができます。

なお、OpenSSHクライアントの設定ファイル($HOME/.ssh/config)に以下のように追記することで、オプションを指定しなくても常にランダムアートイメージで表示させることができます。

$HOME/.ssh/config
  1. Host *
  2. VisualHostKey yes
  
OpenSSHクライアントの設定ファイル($HOME/.ssh/config)が存在すれば修正し、なければ新規作成してください。

では次に、wolfへのSSH接続を試してみましょう。 つまり、Windows PCへの接続です。 手順はtigerへの接続と同じです。

キーボードから ssh wolf.local と入力してEnterキーを押してください。


ssh wolf.local

 

以下のようにSSH接続されます。 Linux PCへの接続との手順の違いはありません。

taro@hawk:~$ ssh wolf.local
The authenticity of host 'wolf.local (192.168.0.110)' can't be established.
ED25519 key fingerprint is SHA256:mM7LZJ9X1ctwCIxASaydtX+w9fnE4GYp8ebc+OCXtzw.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'wolf.local' (ED25519) to the list of known hosts.

Microsoft Windows [Version 10.0.26100.7462]
(c) Microsoft Corporation. All rights reserved.

taro@WOLF C:\Users\taro>

無事にwolfにSSH接続でログインすることができました。 ただし、気になることがあります。 パスフレーズを入力することなく接続できたことです。

パスフレーズを入力しなくてもSSH接続できたのは "SSH 鍵エージェント" と呼ばれるサービスが動作しているためです。

先ほど入力したパスフレーズを "SSH 鍵エージェント" が記憶しているため、今回は入力が免除されました。

  
ログアウトするまでパスフレーズの入力は免除されます。

パスフレーズを入力させたのはGNOME/Keyring


"秘密鍵のロック解除" というダイアログを表示したのは別のソフトウェアであるGNOME/Keyringです。

 

GNOME/Keyringが秘密鍵のパスフレーズの入力を求め、入力されたパスフレーズを "SSH 鍵エージェント" に記憶させています。

"秘密鍵のロック解除" というダイアログの表示が鬱陶しいという方や、毎回パスフレーズを入力したいという方は、

taro@hawk:~$ sudo apt remove gnome-keyring
taro@hawk:~$

と実行してGNOME/Keyringを削除してください。

では本題に戻り、wolfから抜けましょう。 キーボードから exit と入力してEnterキーを押してください。


exit

 
  
CTRL+Dキーで終了することはできません。

以下のようにwolfからログアウトされます。

taro@WOLF C:\Users\taro>exit
Connection to wolf.local closed.
taro@hawk:~$

wolfへの接続も行うことができました。

接続テスト 結果
hawk から tiger ○ 成功
hawk から wolf ○ 成功
tiger から hawk -
wolf から hawk -

tigerでの作業

  
tigerは Linux PC(その2) のことです。 MX Linux を想定しています。

続いてはtigerからhawkへのSSH接続、つまり MX Linux機からLinux Mint機への接続です。 作業手順はhawkと変わらないため、実行結果のみを掲載します。

taro@tiger:~
$ ssh hawk.local
The authenticity of host 'hawk.local (192.168.0.113)' can't be established.
ED25519 key fingerprint is SHA256:Oizqr3MrzuI3QXIXesCW0vdK+Gy1ekz+XBubhOKXGd8.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'hawk.local' (ED25519) to the list of known hosts.
Enter passphrase for key '/home/taro/.ssh/id_ed25519':

taro@hawk:~$ exit
ログアウト
Connection to hawk.local closed.
taro@tiger:~
$

tigerからhawkへのSSH接続によるログインも成功です。

接続テスト 結果
hawk から tiger ○ 成功
hawk から wolf ○ 成功
tiger から hawk ○ 成功
wolf から hawk -

wolfでの作業

  
wolfは Windows PC のことです。 Windows 11 を想定しています。

最後にwolfからhawkへのSSH接続、つまり Windows機からLinux Mint機への接続をテストします。 作業手順はhawkとほぼ変わらないため、実行結果のみを掲載します。

C:\Users\taro>ssh hawk.local

The authenticity of host 'hawk.local (192.168.0.113)' can't be established.
ED25519 key fingerprint is SHA256:Oizqr3MrzuI3QXIXesCW0vdK+Gy1ekz+XBubhOKXGd8.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'hawk.local' (ED25519) to the list of known hosts.
Enter passphrase for key 'C:\Users\taro/.ssh/id_ed25519':

taro@hawk:~$ exit
ログアウト
Connection to hawk.local closed.

C:\Users\taro>

wolfからhawkへのSSH接続によるログインも確認できました。

接続テスト 結果
hawk から tiger ○ 成功
hawk から wolf ○ 成功
tiger から hawk ○ 成功
wolf から hawk ○ 成功

これで4通り全てのSSH接続によるログインのテストが終わりました

  

SSHに関する補足

SSHに関して補足しておきたいことがあります。 SSHが持っている機能は、相手コンピュータへのログインだけではありません

ログインせずにコマンドだけを実行したり、ファイルのやり取りを行うこともできます。

リモートのPCでコマンドを実行する

ssh コマンドでは、リモートのPCにログインすることなくコマンドだけを実行させることもできます。

例えば接続先のホームディレクトリのファイル一覧が見たい場合は、

taro@hawk:~$ ssh tiger.local ls
Desktop
Documents
Downloads
Music
Pictures
Public
Templates
Videos
file-in-the-tiger.txt
taro@hawk:~$

と実行します。

以下の例のように、複数のコマンドを実行することもできます。

taro@hawk:~$ ssh tiger.local 'ls -l ; hostname'
合計 32
drwxr-xr-x  2 taro taro 4096 10月 26 15:09 Desktop
drwxr-xr-x  2 taro taro 4096  1月  2 10:18 Documents
drwxr-xr-x  2 taro taro 4096 12月 29 19:43 Downloads
drwxr-xr-x  2 taro taro 4096  4月  4  2023 Music
drwxr-xr-x  2 taro taro 4096  6月 15  2025 Pictures
drwxr-xr-x  2 taro taro 4096  4月  6  2024 Public
drwxr-xr-x 10 taro taro 4096  1月  2 17:04 Templates
drwxr-xr-x  2 taro taro 4096  4月  6  2024 Videos
-rw-r--r--  1 taro taro   18  1月  3 22:09 file-in-the-tiger
tiger
taro@hawk:~$

ファイルのコピーについて

SSHの仕組みを利用してファイルのコピーを行うこともできます。 ファイルをコピーするための scp コマンドと、ファイルを転送するための sftp コマンドが用意されています。

似たような機能を持つコマンドですが scp は非対話型で sftp は対話型のインタフェースです。

例えば tiger のホームディレクトリにある file-in-the-tiger.txt をこちら(hawk)に複製するとします。 scp であれば、

taro@hawk:~$ scp tiger.local:$HOME/file-in-the-tiger.txt .
file-in-the-tiger.txt                         100%   18    10.2KB/s   00:00
taro@hawk:~$

と実行し、sftp であれば、

taro@hawk:~$ sftp tiger.local
Connected to tiger.local.
sftp> ls
Desktop                   Documents                 Downloads
Music                     Pictures                  Public
Templates                 Videos                    file-in-the-tiger.txt
sftp> get file-in-the-tiger.txt
Fetching /home/taro/file-in-the-tiger.txt to file-in-the-tiger.txt
file-in-the-tiger.txt                         100%   18     4.1KB/s   00:00
sftp> quit
taro@hawk:~$

のように実行します。

グラフィカルに使うなら gFTP や WinSCP がオススメ

端末から scp コマンドや sftp コマンドでファイルをコピーする、というのはやや敷居が高いです。

本ウェブサイトの想定読者である "サポートが切れた Windows PCにLinuxを導入して家庭で利用しようと考えている方" はそこまで覚える必要はないでしょう。

そんな方にオススメなのが、SSHに対応していてグラフィカルに操作できるファイル転送ツールです。

Linuxであれば gFTP が、Windowsであれば WinSCP がオススメです。 どちらも SSH で接続を行いますので、通信内容はもちろん暗号化されます。

gFTPを利用したSSHでのファイル転送

gFTPを利用したリモートPCとのSSH接続でのファイルのやり取りの手順を紹介しておきます。 なお、gFTPのインストールは、

sudo apt install gftp

と実行します。

インストールしたら gftp コマンドを実行しましょう。

1. 接続に必要な項目の入力
1. 接続に必要な項目の入力

上図のように接続に必要な項目を入力します。

Host 接続先
例) tiger.local
ポート番号 22
User ユーザID
例) taro
Pass 秘密鍵のパスフレーズ
プロトコル SSH2

必要な項目を入力したら接続を行います。

2. 接続
2. 接続

上図のように[接続]ボタンを押します。

3. 接続先のディレクトリやファイルが表示される
3. 接続先のディレクトリやファイルが表示される

上図のように接続が行われ、接続先のディレクトリやファイルが表示されます。 [→]ボタンや[←]ボタンでディレクトリやファイルの送受信を行うことができます。

また、ディレクトリやファイルの右クリックで表示されるサブメニューから他の操作(削除や改名など)を行うこともできます。

WinSCPを利用したSSHでのファイル転送

WinSCPを利用したリモートPCとのSSH接続でのファイルのやり取りの手順も紹介しておきます。 こちらは少し面倒です。

1. 接続に必要な項目の入力
1. 接続に必要な項目の入力

上図のように接続に必要な項目を入力します。 なお、パスワード(P)は未入力のままにしておいてください

転送プロトコル(F) SFTP
ホスト名(H) 接続先
例) hawk.local
ポート番号(R) 22
ユーザ名(U) ユーザID
例) taro

続いて秘密鍵の場所を指定します。

2. [設定(D)...]ボタンを押す
2. [設定(D)...]ボタンを押す

上図のように[設定(D)...]ボタンを押します。

3. SSH -> 認証をクリック
3. SSH -> 認証をクリック

上図のように左の分類の SSH -> 認証 をクリックし、表示される "秘密鍵(K)" の右にある[...]ボタンを押します。

4. 秘密鍵の選択ダイアログ
4. 秘密鍵の選択ダイアログ

上図のように秘密鍵の選択ダイアログが開きます。 ファイルの種類に "すべてのファイル (*.*)" を選択し、ホームフォルダの下の .ssh フォルダに移動します。 表示された秘密鍵を選択し、[開く(O)]ボタンを押します。

  
ホームフォルダの下の .ssh は隠しフォルダであるため、秘密鍵の選択ダイアログには(標準設定では)表示されません。 その場合には (2) の入力欄にキーボードで "C:\Users\taro\.ssh" のように入力してフォルダに移動してください。
5. PuTTY形式への変換
5. PuTTY形式への変換

上図のようにPuTTY形式へ変換するかどうかを聞かれます。 変換するしかありませんので、[OK]ボタンを押します。

  
WinSCPはPuTTY形式の鍵しかサポートしていません。
6. パスフレーズの入力
6. パスフレーズの入力

上図のようにパスフレーズの入力を求められます。 ssh-keygen で鍵ペアを生成した時に入力したパスフレーズを入力し、[OK]ボタンを押します。

7. 変換された秘密鍵を保存
7. 変換された秘密鍵を保存

上図のように変換された秘密鍵を保存画面が開きます。 ファイル名を変更する必要はありません。 そのまま、[保存(S)]ボタンを押して保存しましょう。

8. 保存された変換後の秘密鍵
8. 保存された変換後の秘密鍵

上図のように変換後の秘密鍵の情報が表示されますので、[OK]ボタンでメッセージを閉じます。

  
変換後の秘密鍵のファイル名には ".ppk" が足されていることがわかります。
9. 秘密鍵が設定されている
9. 秘密鍵が設定されている

上図のように "秘密鍵(K)" に変換後の秘密鍵のファイルパスが設定されています。 では、[OK]ボタンを押して画面を閉じましょう。

では実際に接続してみましょう。

10. [ログイン]ボタンを押す
10. [ログイン]ボタンを押す

上図のように[ログイン]ボタンを押します。

11. フィンガープリントが正しければ[承認(A)]ボタンを押す
11. フィンガープリントが正しければ[承認(A)]ボタンを押す

上図のように接続先のホスト鍵のフィンガープリントが表示されます。 フィンガープリントが正しいことを確認し、[承認(A)]ボタンを押して承認しましょう。

12. パスフレーズを入力する
12. パスフレーズを入力する

上図のようにパスフレーズの入力を求められます。 秘密鍵のパスフレーズを入力し、[OK]ボタンを押します。

  
変換後の秘密鍵のパスフレーズは、変換前の秘密鍵のパスフレーズと同じです。
13. 接続先のディレクトリやファイルが表示される
13. 接続先のディレクトリやファイルが表示される

上図のように接続が行われ、接続先のディレクトリやファイルが表示されます。

無事、接続できましたので一度ここで終了しましょう。 WinSCPのウィンドウを閉じてください。

14. [いいえ(N)]ボタンを押す
14. [いいえ(N)]ボタンを押す

上図のようにワークスペースを保存せずに終了するかどうかを聞かれますので[いいえ(N)]ボタンを押します。

  
ワークスペースに接続情報を保存することで、次回からパスフレーズを入力するだけで接続できるようになります。
15. ワークスペースに名前をつけて保存する
15. ワークスペースに名前をつけて保存する

上図のように "ワークスペースに名前をつけて保存(S)" に接続先のコンピュータ名などを入力し、[OK]ボタン押して保存しましょう。

保存したら再度WinSCPを起動しましょう

16. ワークスペースに保存された接続先
16. ワークスペースに保存された接続先

上図のように先ほどの接続先がワークスペースに保存されていることがわかります。

この接続先を選択して[開く]ボタンを押すことで、パスフレーズを入力するだけで再度接続することができます

ファイルマネージャでもSSH経由でファイルのやり取りが行える

Linux系OS向けのファイル転送ツールとして gFTP を紹介しました。 しかし実は、Linux MintやMX LinuxのファイルマネージャでもSSH経由でのファイルのやり取りは行えます。

Linux Mint MATE Editionのファイルマネージャ Caja の場合

Linux Mint MATE Editionのファイルマネージャである Caja での手順は以下の通りです。

1. ファイル(F) -> サーバへ接続(S)...を実行
1. ファイル(F) -> サーバへ接続(S)...を実行

上図のようにプルダウンメニューの"ファイル(F) -> サーバへ接続(S)..."を実行します。

2. 接続に必要な項目の入力
2. 接続に必要な項目の入力

上図のようにサーバへの接続画面が開きます。 以下の要領で接続に必要な項目を入力し、[接続する(O)]ボタンを押します。

サーバ(S) 接続先
例) tiger.local
ポート(P) 22
種類 SSH
フォルダー 接続先の初期フォルダ
例) /home/taro
ユーザー名 ユーザID
例) taro
パスワード 秘密鍵のパスフレーズ

なお、この接続をブックマークに追加しておくこともできます。 その場合は以下も入力します。

ブックマークを追加(B) チェック
ブックマーク名 ブックマークのラベル
例) taro@tiger
3. 接続先のディレクトリやファイルが表示される
3. 接続先のディレクトリやファイルが表示される

上図のように接続が行われ、接続先のディレクトリやファイルが表示されます。

ではここで、ファイルマネージャの『場所』の一覧に注目してみましょう

4. ブックマークと接続先が場所の一覧に表示されている
4. ブックマークと接続先が場所の一覧に表示されている

上図のようにファイルマネージャの『場所』の一覧にブックマーク "taro@tiger" が追加されています。 次回以降はこのブックマークをクリックすれば、パスワードの入力だけで接続することができます。

また、ブックマークの下には接続先 "tiger.local..." も表示されています。 USBフラッシュメモリと同様に右端の三角マークをクリックすることでSSH接続を切断できます。

さらにデスクトップにも注目してみましょう。

5. デスクトップアイコン
5. デスクトップアイコン

上図のようにデスクトップにもアイコンが出現しています。 このアイコンを右クリックして表示されるサブメニューから "取り出す(E)" を実行することでもSSH接続を切断することができます。

MX Linux Xfce Editionのファイルマネージャ Thunar の場合

続いて、MX Linux Xfce Editionのファイルマネージャである Thunar の場合の手順です。

1. アドレス欄に接続情報を入力する
1. アドレス欄に接続情報を入力する

上図のようにアドレス欄に接続情報を入力し、Enterキーを押します。 なお、接続情報の意味は以下の通りです。

sftp:// SFTPプロトコルを使用
taro ユーザID
@ ユーザIDとコンピュータ名の区切り
tiger.local コンピュータ名
/home/taro/ 接続先の初期フォルダ
2. パスワードを入力する
2. パスワードを入力する

上図のようにパスワードの入力を求められます。 パスワード(P)に秘密鍵のパスフレーズを入力し、[接続する(N)]ボタンを押します。

3. 接続先のディレクトリやファイルが表示される
3. 接続先のディレクトリやファイルが表示される

上図のように接続が行われ、接続先のディレクトリやファイルが表示されます。

ではここで、ファイルマネージャの『場所』の一覧に注目してください

4. 接続先が一覧に表示されている
4. 接続先が一覧に表示されている

上図のようにファイルマネージャの『場所』の一覧に接続先 "/ on tiger.local" が表示されています。 USBフラッシュメモリと同様に右端の三角マークをクリックすることでSSH接続を切断できます。

なお、この接続をブックマークに追加することもできます。

5. ブックマーク(B) -> ブックマークを追加(A)を実行
5. ブックマーク(B) -> ブックマークを追加(A)を実行

上図のようにプルダウンメニューの"ブックマーク(B) -> ブックマークを追加(A)"を実行します。

6. 場所の一覧にブックマークが追加される
6. 場所の一覧にブックマークが追加される

上図のように場所の一覧にブックマークが追加されます。 次回以降はこのブックマークのクリックで、パスワードの入力のみで接続することができます。

  

1台のPCに複数のOSをインストールしている場合にホスト鍵が異なるという問題

SSHに関して説明しておきたいことがあと1つあります。 それは、1台のPCに複数のOSをインストールして運用している場合に発生する "同じPCなのにSSHのホスト鍵が異なる" という問題についてです。

例えば、tigerにMX LinuxとWindowsが同居している場合を考えてみましょう。

コンピュータ名 OSの種類
tiger MX Linux
Windows

最初にMX Linuxを起動中のtigerに接続したとします。 初回接続時には、以下のように接続を継続するかどうかの確認を求められます。 もちろん yes と入力して接続します。

taro@hawk:~$ ssh tiger.local
The authenticity of host 'tiger.local (192.168.0.106)' can't be established.
ED25519 key fingerprint is SHA256:kmbc7/99jOJgeXullIjkwygu//sbV564u4KSgYs89KM.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?

作業を終えたらtigerからログアウトします。 次にtigerを再起動し、Windowsを起動したとします。

続いて、Windowsが起動中のtigerへ接続します。 すると以下のように "中間者攻撃の可能性があるがホスト鍵が変更されただけかも" という警告が表示されて接続は中断されます

taro@hawk:~$ ssh tiger.local
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ED25519 key sent by the remote host is
SHA256:nNXa9PJn99bwN2OSXDwMERxkNV2xg657bjYMYBmuE/M.
Please contact your system administrator.
Add correct host key in /home/taro/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/taro/.ssh/known_hosts:11
  remove with:
  ssh-keygen -f "/home/taro/.ssh/known_hosts" -R "tiger.local"
Host key for tiger.local has changed and you have requested strict checking.
Host key verification failed.
taro@hawk:~$

警告が表示された理由は、接続先のホスト鍵のフィンガープリントが、

kmbc7/99jOJgeXullIjkwygu//sbV564u4KSgYs89KM

から、

nNXa9PJn99bwN2OSXDwMERxkNV2xg657bjYMYBmuE/M

に変化したためです。 つまり、"悪意ある人間が仕立て上げたニセモノのPCじゃないかを確認しろ!!" と心配してくれているわけです。

もちろん今回の例では問題ありません。 WindowsのOpenSSHサーバが生成したホスト鍵が、MX LinuxのOpenSSHサーバが生成したホスト鍵と異なるだけの話です。

メッセージによるとこの問題を解決するには、

nNXa9PJn99bwN2OSXDwMERxkNV2xg657bjYMYBmuE/M

という新しいホスト鍵のフィンガープリントが正しいかを接続先PCの管理者に確認し、問題がなければ、

ssh-keygen -f "/home/taro/.ssh/known_hosts" -R "tiger.local"

と実行しろ、とのことです。 このコマンドを実行すると $HOME/.ssh/known_hosts に保存されている接続先のホスト鍵の情報が削除されます。 つまり、古いホスト鍵のフィンガープリントである、

kmbc7/99jOJgeXullIjkwygu//sbV564u4KSgYs89KM

が削除されるというわけです。

ただし、tigerの起動OSを切り替えるたびにこの作業をやるというのは現実的ではありません

新しいホスト鍵のフィンガープリントが正しいかを確認し、古いホスト鍵のフィンガープリントを削除する、なんて作業を毎回はやってられません。 それなら、どうするのがいいでしょうか。

同じPCであればホスト鍵は同じにする、という方法が現実的です。

ホスト鍵はアルゴリズムごとに鍵ペアが生成されます。 よって、以下の6ファイルが存在します。

  1. ssh_host_ecdsa_key
  2. ssh_host_ecdsa_key.pub
  3. ssh_host_ed25519_key
  4. ssh_host_ed25519_key.pub
  5. ssh_host_rsa_key
  6. ssh_host_rsa_key.pub

これら6ファイルをOS間で複製し、ホスト鍵の鍵ペアを同じにしましょう。

なお、ホスト鍵の置き場所は以下の通りです。

OSの種類 ホスト鍵の置き場所
Linux Mint /etc/ssh/
MX Linux /etc/ssh/
Windows C:\ProgramData\ssh\
  
ホスト鍵はOpenSSHサーバのインストール時(Windowsではサービスの初回起動時)に作成されます。