このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Linux】SSH実践演習②(SSHコマンドで接続する)
SSH実践演習では、以下の4部に分けて解説しています。
- SSH実践演習①(ホスト名とIPアドレスの確認と変更認)
- SSH実践演習②(SSHコマンドで接続する)
- SSH実践演習③(SSH公開鍵認証に使用するコマンド)
- SSH実践演習④(SSHポートフォワーディング)
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 | ローカルポート転送を設定します。ローカルマシンのポートをリモートホストに転送します。 |
-X | X11転送を有効にし、リモートの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
に記録されることで、次回以降の接続がよりスムーズに行えます。