SSH接続の基本|鍵生成からサーバーログインまでの手順
SSHを使うと、離れたサーバーに安全にログインして、設定変更やファイル操作を行えます。実務では、VPSの初期設定、Webサーバーの保守、アプリのデプロイ確認などでほぼ必須です。
この記事では、SSH鍵の作成、公開鍵の登録、実際のログインまでを、OpenSSHベースの最小手順でまとめます。macOS、Linux、WindowsのOpenSSHクライアントを想定し、まず動くことを優先して説明します。
- できること: SSH鍵を作り、パスワード入力を減らして安全にサーバーへ接続できる
- 使う場面: VPS初期設定、Linuxサーバー保守、公開鍵認証への切り替え
- 先に結論:
ssh-keygenで鍵を作り、公開鍵をサーバー側のauthorized_keysへ登録し、ssh user@hostで接続すればよい
ここがポイント: SSH接続で最初に押さえるべきなのは、秘密鍵は手元に残し、公開鍵だけをサーバーへ置くことです。ここを逆にすると運用も安全性も崩れます。
SSHで何ができるのか
SSHは、暗号化された通信でサーバーへ接続するための仕組みです。Telnetのように平文でやり取りしないため、管理用のログイン手段として広く使われています。
よく使う作業は次のとおりです。
- サーバーへログインしてログ確認や設定変更を行う
scpやsftpでファイルを転送する- Gitサーバーや踏み台サーバーへ安全に接続する
- 自動化スクリプトやデプロイ処理の接続先として使う
前提環境と用語
ここで扱う例は、OpenSSHクライアントを使う前提です。macOSやLinuxでは標準で入っていることが多く、WindowsでもOpenSSHクライアントを使う構成が一般的です。
先に用語を整理します。
- 秘密鍵: 自分のPCにだけ置く鍵。外部へ渡さない
- 公開鍵: サーバーへ登録する鍵
authorized_keys: サーバー側で公開鍵を保存するファイル~/.ssh: 鍵や設定ファイルを置くことが多いディレクトリ
接続前に確認したい情報
SSH接続の前に、最低でも次の4点を手元に置いておくと詰まりにくくなります。
- 接続先ホスト名またはIPアドレス
- ログインユーザー名
- SSHの待受ポート番号
- サーバー側へ公開鍵を登録する方法
たとえばVPSでは、初回だけ管理画面からコンソールを開いて公開鍵を置く場合があります。クラウドやレンタルサーバーごとに入口が違うので、ここは契約先の案内も確認してください。
鍵生成からログインまでの基本手順
まず全体像を見てから、順番に進めるのが最短です。
- ローカルPCで鍵ペアを作成する
- 公開鍵をサーバーへ登録する
sshコマンドで接続する- 必要なら設定ファイルで接続を短くする
1. SSH鍵を生成する
最小構成なら次のコマンドで作成できます。
ssh-keygen -t ed25519 -C "your_email@example.com"
ed25519は、OpenSSHでよく使われる鍵形式のひとつです。特別な要件がなければ、まずはこの形式で始めると扱いやすいです。
実行すると、保存先とパスフレーズを聞かれます。
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/user/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
そのままEnterを押すと、通常は次の2ファイルが作られます。
~/.ssh/id_ed25519: 秘密鍵~/.ssh/id_ed25519.pub: 公開鍵
2. 公開鍵を確認する
サーバーへ登録するのは .pub のほうです。中身は次のコマンドで確認できます。
cat ~/.ssh/id_ed25519.pub
出力例:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIExampleKeyData your_email@example.com
この1行をサーバー側の ~/.ssh/authorized_keys に追加します。秘密鍵 id_ed25519 は絶対にサーバーへコピーしません。
3. サーバー側へ公開鍵を登録する
すでにパスワードログインできるなら、ssh-copy-id が使える環境ではこれが簡単です。
ssh-copy-id -i ~/.ssh/id_ed25519.pub username@server_ip
ssh-copy-id が使えない場合は、サーバーへログインして手動で登録します。
mkdir -p ~/.ssh
chmod 700 ~/.ssh
printf '%s\n' 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIExampleKeyData your_email@example.com' >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
この権限設定は重要です。権限が緩すぎると、公開鍵を正しく置いていてもログインに失敗することがあります。
4. SSHでログインする
登録が終わったら、ローカルPCから接続します。
ssh username@server_ip
ポート番号が標準の22番以外なら -p を付けます。
ssh -p 2222 username@server_ip
初回接続では、接続先ホストの公開鍵確認が表示されることがあります。
The authenticity of host 'server_ip (server_ip)' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
接続先が正しいと確認できたら yes を入力します。ここで表示されるフィンガープリントは、なりすまし対策として重要です。クラウド管理画面やサーバー提供元の情報と照合できるなら確認しておくと安全です。
実務でよく使う書き方
毎回IPアドレスやポート番号を打つのは面倒です。接続先が増えるなら ~/.ssh/config を使うと管理しやすくなります。
~/.ssh/config の最小例
Host web-prod
HostName 203.0.113.10
User deploy
Port 2222
IdentityFile ~/.ssh/id_ed25519
この設定を書けば、接続は次の1行で済みます。
ssh web-prod
複数サーバーを扱う現場では、この形にしておくと打ち間違いが減ります。ポートや鍵ファイルを毎回コマンドに書かずに済むため、運用が安定します。
サンプル: 入力例と接続イメージ
ローカル側での一連の操作をまとめると、最小例は次の流れです。
ssh-keygen -t ed25519 -C "work-pc"
cat ~/.ssh/id_ed25519.pub
ssh-copy-id -i ~/.ssh/id_ed25519.pub deploy@203.0.113.10
ssh deploy@203.0.113.10
ログイン後のイメージ:
deploy@web01:~$ pwd
/home/deploy
deploy@web01:~$ uname -a
Linux web01 6.x.x ...
ここまで通れば、SSH接続の基本は完了です。あとは通常のシェル操作でログ確認、設定編集、デプロイ確認などに進めます。
よくある失敗と対処
SSHは仕組み自体は単純ですが、最初は権限やユーザー名で詰まりやすいです。
Permission denied (publickey) が出る
原因として多いのは次の4つです。
- 公開鍵を別ユーザーの
authorized_keysに置いている IdentityFileや鍵ファイルの指定が違う- サーバー側の
~/.sshやauthorized_keysの権限が不適切 - サーバー側で公開鍵認証が無効になっている
確認コマンドの例:
ssh -v username@server_ip
-v を付けると、どの鍵を試したか、どこで弾かれたかを追いやすくなります。接続できないときは、まずこの詳細表示を見るのが早いです。
鍵はあるのにパスワードを求められる
次の点を確認してください。
- 接続しているユーザー名が合っているか
- 公開鍵の中身が途中で改行・欠落していないか
~/.ssh/configで別の鍵を指定していないか- サーバーのSSH設定で
PubkeyAuthenticationが有効か
秘密鍵の扱いが危ない
やってはいけない例も整理しておきます。
- 秘密鍵をメールやチャットに貼る
- 秘密鍵を共有フォルダへ平置きする
- パスフレーズなしの鍵を長期運用で使い回す
- 退職者や異動者の鍵を放置する
SSH鍵はログイン手段そのものです。パスワードと同じか、それ以上に慎重に扱う必要があります。
実務での使いどころ
SSHは単にサーバーへ入るだけではありません。次のような場面で基本操作がそのまま効きます。
- Webアプリのデプロイ後にログを確認する
- バッチサーバーへ入り、定期処理の実行結果を見る
scpで設定ファイルや成果物を送る- GitのSSH認証でリモートリポジトリへ接続する
特に、手順書や自動化スクリプトを書く担当になると、ssh と鍵認証の理解がそのまま作業速度に直結します。接続のたびに都度調べる状態を抜けるだけでも、保守の負担はかなり下がります。
代替手段と使い分け
SSHが基本ですが、状況によっては別の入口を使うこともあります。
- Web管理画面のコンソール: 初回設定や緊急時に便利
- VPN経由のRDPや管理ツール: Windowsサーバー中心の環境で使うことがある
- 構成管理ツール: 台数が増えたらAnsibleなどでSSHを土台に自動化する
最初の1台を触る段階では、まずSSHの手作業を理解するのが先です。自動化は、その基本操作を正しく再現できるようになってからのほうが失敗しにくいです。
最後に確認したいポイント
作業前後で、次の3点だけは必ず見直してください。
- 秘密鍵はローカルPCだけに保管しているか
- サーバー側の
authorized_keysと権限設定は正しいか ssh -vで接続経路を確認できる状態か
SSHは一度つまずくと苦手意識が残りやすい分野ですが、やること自体は多くありません。鍵を作る、公開鍵を置く、正しいユーザーで接続する。まずはこの3段階を手元の検証サーバーで再現できるようにしておくと、実運用でも慌てにくくなります。
