このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Linux】SSH実践演習②(SSHコマンドで接続する)

SSH実践演習では、以下の4部に分けて解説しています。

 SSHを使ったリモートアクセスを実践するために、仮想マシンを2台準備して、SSHクライアントに仮想マシンの「Ubuntu1」を、SSHサーバには仮想マシンの「Ubuntu2」を使用する構成にしています。

 SSH(Secure Shell)は、リモートサーバに安全に接続するためのプロトコルです。SSHコマンドを使用することで、ネットワークを介してリモートマシンにログインし、リモート操作を行うことができます。SSHは、主にシステム管理者や開発者がサーバを管理する際に使用され、データの暗号化や認証を行うため、リモートアクセス時のセキュリティを高めます。

SSHコマンドの概要

 SSHコマンドは、リモートホストへの接続を確立するために使用されます。以下は、SSHコマンドの基本的な構文と、よく使用されるオプションの説明です。

【構文】
ssh [オプション] [ログインユーザー名@]接続先ホスト

主なオプションと説明

オプション説明
-l ログインユーザー名接続時に使用するユーザー名を指定します。
-i 秘密鍵のパス接続に使用する秘密鍵のパスを指定します。
-o 項目名=値SSHの設定をカスタマイズするためのオプション。例: -o StrictHostKeyChecking=no
-p ポート番号SSH接続に使用するポート番号を指定します(デフォルトは22)。
-Lローカルポート転送を設定します。ローカルマシンのポートをリモートホストに転送します。
-XX11転送を有効にし、リモートのXアプリケーションをローカルで使用できるようにします。
主なオプションと説明

Ubuntu2サーバへSSH接続する

 以下の操作を通じて、SSHクライアントであるUbuntu1から、SSHサーバであるUbuntu2へ接続する手順を説明します。

1.SSH接続を実行

Ubuntu1からUbuntu2へ接続するには、以下のコマンドを使用します。

・「ssh 192.168.1.190」コマンドを実行します。

 このコマンドを実行すると、初めて接続する場合、接続を続行するかどうかを尋ねられます。ここで「yes」と入力すると、サーバのフィンガープリントが表示されます。

 次に、Ubuntu2のユーザーであるuser01のパスワード「password」を入力します。これにより、Ubuntu2にログインできます。

user01@Ubuntu1:~$ ssh 192.168.1.190
The authenticity of host '192.168.1.190 (192.168.1.190)' can't be established.
ED25519 key fingerprint is SHA256:z52p8Qnj9esp+Hi/TZfxNbbk7D06P5agDusdz9WtAn0.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.1.190' (ED25519) to the list of known hosts.
user01@192.168.1.190's password: 
Welcome to Ubuntu 22.04.4 LTS (GNU/Linux 6.8.0-40-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

Expanded Security Maintenance for Applications is not enabled.
16のアップデートはすぐに適用されます。

これらの追加アップデートを確認するには次を実行してください: apt list --upgradable

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm

You have new mail.
Last login: Mon Aug 26 23:33:41 2024 from localhost

user01@Ubuntu2:~$
2.フィンガープリントの確認

 SSH接続時に表示されるフィンガープリントは、接続先サーバの公開鍵のハッシュ値です。これを事前に確認しておくことで、サーバーが正当なものであることを確認できます。

 フィンガープリントは、サーバが送信する公開鍵の正当性を確認するための重要な要素ですが、今回の接続では、サーバがUbuntu2であることが明らかであるため、この確認作業は省略します。

3.~/.ssh/known_hostsファイルの確認

 接続が成功すると、SSHクライアントはサーバの公開鍵を~/.ssh/known_hostsファイルに記録します。

 一度ログアウトし(exitコマンドを使用)、以下のコマンドでknown_hostsファイルの内容を確認します。

  • exit」コマンド
  • cat ~/.ssh/known_hosts」コマンド

 このファイルには、接続先のホスト(例: 192.168.1.190)、公開鍵暗号アルゴリズム、ハッシュ関数の種類、ホストの公開鍵が保存されます。

user01@Ubuntu1:~$ cat ~/.ssh/known_hosts
|1|ieA3FG28T8YO5BzW7jmgGeq4JWc=|3Hk3WysHu1v/0+3Lo3gcDQSrxYI= ssh-ed25519 
AAAAC3NzaC1lZDI1NTE5AAAAIPJIB6t2tn+XRKbu3iRQAM8f9Qt0nvbeTkGIxGsMu0Av
|1|mx1lP6G5vvMfvyjD5vviPLo2644=|UNdzoeOuPlgWRmY+gi3+cMhn6+E= ssh-rsa 
AAAAB3NzaC1yc2EAAAADAQABAAABgQDh60s6hqSNhCiwiLyDZ4mQBoxhHsglUaI+lR+bapdDuQSWyi3DN2SiWTX7tk
yD44+DO/SR/pcbJvdKzrksQb6BWA08dqGbmHY9iKM5PT8bJnJcdHLFzPlmxqvyEVS8hEbC7y66VnipZf53LfmnjSvr
JWcmPMYsrvIZOE/DnsgXD4SbX2yNYuo+C5k4UMnYtCTl+RnOlGPFJw/BK9cpM3PdO7DjRdHdyjvRy2B/RYstoEjDV5
1Izn+uXt3c5D+E9RnfBk9uPkkrgHujq6JcdLdETf0PhDzkwzXyznvp/hbCzVBkfbxpC25Fo6GUrmulgAUXu/HjxEk3
fPIdj1n1hlk+S9dsql6NlzUJvytdLZECsBdKOGOiyOGIZ7q1sdQiOE5zPf6T5rUzBPriVlSzmHRuGnnB/N5YTXo5tM
vGHeM2aML5vA3KfBgyDVmu2Zd3rerrm828Qe/sMqZdmyyCyA/mmnoy2FyxFXnRIYVb3mZJopxn+RLWQIJvih0KQ8aL+zM=
|1|nFVYCzxUwA/CPBak+hrFlWI6G7M=|Ztlqm44qw+kD4Vr+l1+07PkvgMg= 
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBIGzDDAG8q9BsKGxUR
m51HFlf2GDUQ8ucF7cxLRpdhwiikZh9+GqtR2kpyJoiZ0tXH+Sj+4KVQX/kNL+3gyLe7g=

まとめ

 SSHコマンドは、リモートサーバへの安全なアクセスを提供する強力なツールです。コマンドのオプションを活用することで、さまざまな環境や要件に合わせた接続が可能になります。初回の接続時にはサーバーのフィンガープリントが表示され、正当なサーバであるかを確認することが重要です。また、接続時にサーバーの公開鍵が~/.ssh/known_hostsに記録されることで、次回以降の接続がよりスムーズに行えます。