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

OpenSSHの概要とインストール(Ubuntu)

 OpenSSHは、リモートホストに安全に接続するためのプロトコルであるSSHのオープンソース実装です。SSH(Secure Shell)は、ネットワーク経由でリモートコンピュータにアクセスし、コマンドの実行やファイル転送を安全に行うためのプロトコルです。SSHでは、公開鍵暗号方式を利用してデータを暗号化し、セキュリティを確保しています。Ubuntuでは、OpenSSHのサーバパッケージ(openssh-server)をインストールすることで、SSHサーバとして機能させることができます。

OpenSSHの概要

 OpenSSHは、SSHのオープンソース実装であり、リモートホストに対して安全な通信を提供します。SSHを使用することで、ネットワーク上のデータ通信を暗号化し、盗聴や改ざんから保護することができます。OpenSSHでは、ホスト認証とユーザー認証を行うことで、安全な通信を実現します。Ubuntuを含む多くのLinuxディストリビューションでは、OpenSSHがデフォルトで使用されています。クライアント側はsshコマンドを使用してリモートホストに接続リクエストを送り、サーバ側はsshdがリクエストを受け入れてリモート操作を可能にしています。

  • ホスト認証: リモートホストの正当性を確認し、信頼できるホストとのみ通信を行います。
  • ユーザー認証: SSHサーバへのアクセスを許可されたユーザーのみが接続できるようにします。
項目説明
SSH (Secure Shell)SSHは、リモートのコンピュータと安全に通信するためのプロトコルであり、公開鍵暗号方式を用いてデータの機密性を確保します。
ホスト認証接続先のホストが信頼できるかどうかを確認するプロセス。ホストの公開鍵を検証することで、偽のサーバーへの接続を防ぎます。
ユーザー認証アクセスするユーザーが正当な権限を持っているかどうかを確認するプロセス。パスワード認証や公開鍵認証が一般的に使用されます。
OpenSSHOpenSSHは、SSHのオープンソース実装であり、Linuxシステムで広く使用されています。クライアント側はsshコマンドを使用し、サーバー側はsshdデーモンがリクエストを処理します。
OpenSSHの概要

openssh-serverのインストール手順(Ubuntu)

OpenSSHのサーバをUbuntuにインストールするには、以下の手順を行います。

ターミナルを開き、sudo apt install openssh-serverコマンドを実行します。

・「sudo apt install openssh-server」コマンドを実行します。

 途中、「y」と入力してインストール作業を続行します。インストールが完了すると、SSHサーバが自動的に起動し、リモートからの接続を受け入れる準備が整います。

user01@ubuntu-vm:~$ sudo apt install openssh-server
[sudo] user01 のパスワード: 
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了        
状態情報を読み取っています... 完了        
以下の追加パッケージがインストールされます:
  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 個、保留: 15 個。
751 kB のアーカイブを取得する必要があります。
この操作後に追加で 6,046 kB のディスク容量が消費されます。
続行しますか? [Y/n] 
取得:1 http://jp.archive.ubuntu.com/ubuntu jammy-updates/main amd64 openssh-sftp-server amd64 1:8.9p1-3ubuntu0.10 [38.9 kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu jammy-updates/main amd64 openssh-server amd64 1:8.9p1-3ubuntu0.10 [435 kB]
取得:3 http://jp.archive.ubuntu.com/ubuntu jammy-updates/main amd64 ncurses-term all 6.3-2ubuntu0.1 [267 kB]
(省略)

sshdの起動確認

 SSHサービスがサーバで提供されているかを確認するには、sshdが起動していることを確認します。以下のコマンドで確認できます。

・「systemctl status sshd.service」コマンドを実行します。

「q」キーを押すとコマンドが終了します。

user01@ubuntu-vm:~$ systemctl status sshd.service
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enable>
     Active: active (running) since Sat 2024-08-31 03:47:34 JST; 1min 50s ago
       Docs: man:sshd(8)
             man:sshd_config(5)
    Process: 5501 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
   Main PID: 5503 (sshd)
      Tasks: 1 (limit: 2251)
     Memory: 1.7M
        CPU: 15ms
     CGroup: /system.slice/ssh.service
             └─5503 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"

 8月 31 03:47:34 ubuntu-vm systemd[1]: Starting OpenBSD Secure Shell server...
 8月 31 03:47:34 ubuntu-vm sshd[5503]: Server listening on 0.0.0.0 port 22.
 8月 31 03:47:34 ubuntu-vm sshd[5503]: Server listening on :: port 22.
 8月 31 03:47:34 ubuntu-vm systemd[1]: Started OpenBSD Secure Shell server.

/etc/ssh/ssh_configファイル

 クライアントがSSHコマンドを実行する際の設定は、/etc/ssh/ssh_configファイルに記載されています。このファイルには、SSHクライアントのデフォルト設定が含まれており、必要に応じて編集することができます。

/etc/ssh/sshd_configファイル

 SSHサーバがsshdを起動する際の設定は、/etc/ssh/sshd_configファイルに記載されています。このファイルには、SSHサーバの動作に関する設定が含まれています。デフォルトでも使用できますが、セキュリティを強化するためにカスタマイズすることが可能です。

/etc/ssh/sshd_configファイルの主な設定項目
設定項目説明
PortSSHサーバがリッスンするポート番号。通常は22です。
AddressFamilyIPv4またはIPv6のどちらを使用するかを指定します。
ListenAddressSSHサーバがリッスンするIPアドレスを指定します。
HostKeyホスト認証で使用する秘密鍵のパスを指定します。
LoginGraceTimeユーザーがログインするための猶予時間を設定します。
PermitRootLoginrootユーザーのSSHログインを許可するかどうかを設定します。
StrictModesSSHサーバがセキュリティ上の制限を厳格に適用するかどうかを設定します。SSH関連のファイルのパーミッションをチェックします。
MaxAuthTriesユーザーがログイン認証に失敗できる最大回数を設定します。
MaxSessions同時に許可されるSSHセッションの最大数を設定します。
/etc/ssh/sshd_configファイルの主な設定項目

/etc/ssh/sshd_configファイルの内容を確認する

SSHサーバの設定ファイルを確認するには、以下のコマンドを使用します。

・「cat /etc/ssh/sshd_config」コマンドを実行します。

user01@ubuntu-vm:~$ cat /etc/ssh/sshd_config
(省略)
#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key
(省略)
#LoginGraceTime 2m
#PermitRootLogin prohibit-password
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
(省略)

まとめ

 OpenSSHは、リモートホストへの安全なアクセスを提供する重要なツールです。Ubuntuにおいて、OpenSSHサーバをインストールし、適切な設定を行うことで、リモートからの安全な接続を実現することができます。SSHはシステム管理やリモートワークの効率化に不可欠な技術です。