【ネットワークコマンド】 SSHコマンドの基本的な使い方: パスワード認証と公開鍵認証
今回は、Linux環境(Ubuntuなど)で利用されるOpenSSHを前提に、SSHコマンドの基本と認証設定の実践手順を紹介します。
SSHはリモート先の端末に安全にログインするための仕組みで、サーバー運用や開発作業で頻繁に使用します。
この記事では、「パスワード認証」と「公開鍵認証」をそれぞれ整理し、 sshd_configでパスワード認証をON/OFFする具体的な設定例までまとめます。
目次
この記事で試した実施環境について
この記事作成に当たって実施した環境は以下の通りです。
今回の検証条件は次の通りです。
| 項目 | サーバー側 | クライアント側 |
|---|---|---|
| 環境 | ラズベリーパイ3B | Windows(WSL2) |
| OS | Ubuntu 24.04 | Ubuntu 24.04 |
| ユーザー名 | kamo-server | kamo-client |
| ホスト名 | kamo1 | kamo2 |
| IPアドレス | 192.168.1.225/24 | 192.168.1.109/24 |
実際にこの記事を読んでSSH接続を試してみたい初心者の方はIPアドレス部分を自身の環境に置き換えて考えて下さい。
また、接続に必要な情報(ユーザー名・ホスト名・IPアドレス)を確認する方法についても、このあと手順の中で説明します。
SSHの基本知識
SSH(Secure Shell)は、SSHクライアントとSSHサーバーの間で暗号化通信を行いながらリモートログインを実現するためのプロトコルです。
代表的な実装はOpenSSHで、Ubuntuを含む多くのLinuxディストリビューションで標準的に採用されています。
実運用ではSSH v2を使うことが前提です。SSH v1は古い仕様のため現在は利用しません。
補足
リモート接続対象側で動作するのがSSHサーバー(sshd)、接続する側で使うのがSSHクライアント(sshコマンド)です。
認証方式の全体像
OpenSSHでよく使う認証方式は、パスワード認証と公開鍵認証です。
| 認証方式 | 説明 | 運用上のポイント |
|---|---|---|
| パスワード認証 | サーバー側ユーザーのパスワードで認証する | 導入は簡単。外部公開では原則として無効化し、やむを得ず有効化する場合は総当たり攻撃対策が必須 |
| 公開鍵認証 | クライアントの秘密鍵とサーバーの公開鍵登録で認証する | 現在の主流。パスワード認証をOFFにして運用することが一般的です。 |
次節では上記の2通りのSSH接続方法を紹介します。
パスワード認証の使い方
【サーバー側手順】1.インストールと起動確認
まずはOpenSSHサーバーをインストールし、起動状態を確認します。
kamo-server@kamo1:~$ sudo apt update kamo-server@kamo1:~$ sudo apt install openssh-server kamo-server@kamo1:~$ sudo systemctl enable --now ssh kamo-server@kamo1:~$ sudo systemctl status ssh
なお、ディストリビューションによってsystemdのサービス名がsshではなく sshdの場合があります。その場合は sudo systemctl enable --now sshdと sudo systemctl status sshdを使用してください。
上記のコマンドによって次のようなステータスが表示されれば正常にSSHサーバーが動作しています。
● ssh.service - OpenBSD Secure Shell server Loaded: loaded (/usr/lib/systemd/system/ssh.service; enabled; preset: enabled) Active: active (running) since Sat 2026-02-14 13:11:02 JST; 3h 52min ago Invocation: 0478ca2c30e74592a047e48f3f909057 Docs: man:sshd(8) man:sshd_config(5) Process: 1021 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS) Main PID: 1034 (sshd) Tasks: 1 (limit: 756) CPU: 437ms CGroup: /system.slice/ssh.service └─1034 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups" Feb 14 13:11:02 kamo1 systemd[1]: Starting ssh.service - OpenBSD Secure Shell server... Feb 14 13:11:02 kamo1 sshd[1034]: Server listening on 0.0.0.0 port 22. Feb 14 13:11:02 kamo1 sshd[1034]: Server listening on :: port 22. Feb 14 13:11:02 kamo1 systemd[1]: Started ssh.service - OpenBSD Secure Shell server.
【サーバー側操作】2.ユーザーパスワード設定
補足
既にパスワード設定を実施済みの場合はここはスキップできます。
次に、現在ログイン中のユーザー(ここではkamo-server)にパスワードを設定します。 別ユーザーに設定したい場合はsudo passwd <user>を使用してください。
kamo-server@kamo1:~$ passwd
最後にサーバー側で22番ポート待受があることを確認します。
kamo-server@kamo1:~$ sudo ss -tulpn | grep :22
以下のような結果であれば、SSHサーバーは正常に接続を待ち受けています。
kamo-server@kamo1:~$ sudo ss -tulpn | grep :22
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
users:(("sshd",pid=1034,fd=6))
tcp LISTEN 0 128 [::]:22 [::]:*
users:(("sshd",pid=1034,fd=7))
この結果から分かること
- LISTENが表示されているため、sshdは22番ポートで接続を待ち受けています。
- 0.0.0.0:22は、IPv4の全インターフェースで待ち受けていることを示します。
- [::]:22は、IPv6の全インターフェースで待ち受けていることを示します。
- この出力から、SSHサーバー自体は起動しており接続受付状態と判断できます(実際の到達可否はファイアウォール設定にも依存します)。
【サーバー側操作】3.ユーザー名・ホスト名・IPアドレスの確認
クライアント側からSSH接続するには、接続先サーバーの「ログインユーザー名」「ホスト名」「到達可能なIPアドレス」を把握しておくと整理しやすくなります。 サーバー側で次のコマンドを実行して確認します。
- whoamiでログインユーザー名を確認します。
- hostnameでホスト名を確認します。
- hostname -Iとip -4 -br addrで到達可能なIPアドレスを確認します。
コンソールのプロンプトにも<user>@<host>:~$形式でユーザー名とホスト名が表示されます。ここでは確認漏れを防ぐため、コマンドでの確認手順も載せています。
kamo-server@kamo1:~$ whoami kamo-server@kamo1:~$ hostname kamo-server@kamo1:~$ hostname -I kamo-server@kamo1:~$ ip -4 -br addr
hostname -Iは複数のIPアドレスを返す場合があります。 クライアントと同一ネットワークで到達できるIP(例: 192.168.x.x)を選んでください。
例えば、ユーザー名がkamo-serverでサーバーIPが 192.168.1.225なら、 接続コマンドはssh kamo-server@192.168.1.225になります。
なお、ホスト名で接続する場合は名前解決が必要です。例えばssh kamo-server@kamo1は、 DNS・/etc/hosts・mDNSなどでkamo1を解決できる環境で利用してください。 解決できない場合はIPアドレス指定で接続します。
それではクライアント側からSSH接続をしてみます。
【クライアント側操作】接続確認
通常、SSH接続要求用コマンド(ssh)はプリインストールされていますので、インストール操作は不要です。
そのため、クライアント側で次のコマンドを実行することで直ぐにサーバー側にSSH接続できます。
kamo-client@kamo2:~$ ssh kamo-server@192.168.1.225
初回接続時はホスト鍵フィンガープリントの確認が表示されるため、問題なければyesを入力します。
公開鍵認証の使い方
ここでは、公開鍵認証の流れを次の3手順で実施します。
【クライアント側操作】① 鍵ペアの作成
まずクライアント側で鍵ペア(秘密鍵・公開鍵)を作成します。
kamo-client@kamo2:~$ ssh-keygen -t ed25519 -C "my-laptop"
【クライアント側操作】② サーバー側への公開鍵登録
次に、生成した公開鍵をサーバー側の~/.ssh/authorized_keysへ登録します。
kamo-client@kamo2:~$ ssh-copy-id kamo-server@192.168.1.225
ssh-copy-idが使えない環境では、次のように手動で登録できます。
kamo-client@kamo2:~$ cat ~/.ssh/id_ed25519.pub | ssh kamo-server@192.168.1.225 'mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys'
【クライアント側操作】③ SSH接続
登録後、通常のSSH接続コマンドでログインし、パスワードではなく秘密鍵で認証されることを確認します。
kamo-client@kamo2:~$ ssh kamo-server@192.168.1.225
これでSSH接続ができました。
sshd_configで認証方式を切り替える
パスワード認証のON/OFFは、SSHサーバー設定ファイルである/etc/ssh/sshd_configで制御します。
UbuntuではInclude /etc/ssh/sshd_config.d/*.confが有効な構成も多いため、 変更管理しやすいように/etc/ssh/sshd_config.d/99-auth.confを新規作成して管理する運用が一般的です。
その前提を確認するため、次のコマンドでInclude設定の有無を確認します。
kamo-server@kamo1:~$ grep -n '^Include' /etc/ssh/sshd_config
Include /etc/ssh/sshd_config.d/*.confが表示される場合は /etc/ssh/sshd_config.d/99-auth.confを編集し、 表示されない場合は/etc/ssh/sshd_configを直接編集してください。
kamo-server@kamo1:~$ sudo nano /etc/ssh/sshd_config # または kamo-server@kamo1:~$ sudo nano /etc/ssh/sshd_config.d/99-auth.conf
パスワード認証をONにする例
PasswordAuthentication yes KbdInteractiveAuthentication yes UsePAM yes PubkeyAuthentication yes
パスワード認証をOFFにする例(公開鍵認証を使う)
PasswordAuthentication no KbdInteractiveAuthentication no PubkeyAuthentication yes
古い設定項目に関する補足
環境によってはChallengeResponseAuthenticationが存在する場合があります。 その場合は、パスワード系認証を止めたいときにChallengeResponseAuthentication noも併せて設定します。
設定反映前に構文チェックし、問題なければSSHサービスを再起動します。
kamo-server@kamo1:~$ sudo sshd -t kamo-server@kamo1:~$ sudo systemctl restart ssh
なお、ディストリビューションによってsystemdのサービス名がsshではなく sshdの場合があります。その場合はsudo systemctl restart sshdを実行してください。
設定値の反映確認は次のコマンドが便利です。
kamo-server@kamo1:~$ sudo sshd -T | grep -E 'passwordauthentication|kbdinteractiveauthentication|pubkeyauthentication|usepam'
重要
認証設定を変更する際は、既存のSSH接続を切らずに別ターミナルから新規ログイン確認を行ってください。 先に現在の接続を閉じると、誤設定時にサーバーへ再接続できなくなる場合があります。
インターネット経由でSSHを利用する際の注意点
SSHサーバーをインターネットに公開する場合、DDNSとルーターのポートフォワーディング設定で到達可能になります。
ただし、公開後はすぐにスキャンや総当たり攻撃の対象になります。最低限、以下を実施してください。
- 公開鍵認証を使い、パスワード認証をOFFにする
- rootの直接ログインを無効化する(例: PermitRootLogin no など)
- ファイアウォールで接続元IPを制限する
- ログ監視と遮断(fail2ban等)を導入する
Tips
私が聞いた体験談では、検証目的で認証を無効化したSSHサーバーをインターネットへ一時公開したところ、 約5分で第三者からのアクセスが発生したケースがありました。 公開時間が短くても攻撃対象になるため、テスト時でも認証設定とアクセス制限は必ず有効化しておきましょう。
おわりに
この記事では、Linux環境におけるSSHの基本運用として、パスワード認証と公開鍵認証の両方を扱いました。
特に実運用で重要なのは、認証方式をsshd_configで明示的に管理し、意図した設定になっているかを毎回検証することです。
公開環境でSSHを使う場合は、公開鍵認証を基本にした最小権限運用を徹底していきましょう。
参考文献
- OpenSSH Manual Pages https://www.openssh.com/manual.html
- sshd_config(5) https://man.openbsd.org/sshd_config
- ssh(1) https://man.openbsd.org/ssh
- ssh-keygen(1) https://man.openbsd.org/ssh-keygen