Ubuntuで毎回 ssh -i ~/.ssh/id_ed25519 -p 2222 ubuntu@203.0.113.10 と長いコマンドを打っていませんか?~/.ssh/config を使えば、ssh myserver の5文字だけで接続できるようになります。
この記事では、Ubuntu 24.04 LTS の Docker 公式イメージ(ubuntu:24.04)を使い、~/.ssh/config の書き方と ssh -G コマンドによる設定確認を実際に動かした結果を載せています。1台のサーバーへの接続設定から、GitHub の複数アカウント切り替え、踏み台サーバー経由の ProxyJump まで順を追って説明します。
この記事のポイント
~/.ssh/configにホスト設定を書けばssh エイリアス名だけで接続できる- Ubuntu 24.04(Noble)では OpenSSH_9.6p1(1:9.6p1-3ubuntu13.16)がインストールされます(実測)
~/.ssh/は 700、configファイルは 600 のパーミッションが必須。644 にすると「Bad owner or permissions」エラーが出る(実証済み)ssh -G ホスト名で設定が正しく読み込まれているかをすぐ確認できる- GitHubの個人・会社アカウントも
Hostエイリアスで簡単に切り替えられる
注意
本記事のコマンドは Ubuntu 24.04 LTS(Docker公式イメージ ubuntu:24.04)で検証しています。Ubuntu 22.04 との比較も含みますが、バージョンが異なると挙動が変わる場合があります。
~/.ssh/config とは何か
~/.ssh/config は、OpenSSH クライアントの接続設定をまとめておくファイルです。ホスト名・ユーザー名・ポート番号・使用する秘密鍵などを事前に定義しておくことで、ssh コマンドの入力を大幅に短縮できます。
設定ファイルは2種類あります。
~/.ssh/config:ユーザーごとの設定。通常はこちらを編集します/etc/ssh/ssh_config:システム全体の設定(全ユーザーに適用)
優先順位はユーザー設定 → システム設定の順です。同じオプションが両方に書かれている場合は、~/.ssh/config の設定が優先されます。
前提環境
- OS: Ubuntu 24.04 LTS(Docker公式イメージ
ubuntu:24.04) - OpenSSH クライアントバージョン:
OpenSSH_9.6p1 Ubuntu-3ubuntu13.16(実測) - 実行環境: Docker(
docker run --rm ubuntu:24.04) - 検証日: 2026-06-13

Ubuntu 24.04 では ssh -V コマンドで OpenSSH_9.6p1 Ubuntu-3ubuntu13.16, OpenSSL 3.0.13 30 Jan 2024 と表示されました(2026-06-13 実測)。Ubuntu 22.04 では OpenSSH_8.9p1 なので、9.6p1 のほうが新しい機能(accept-new などの動作改善)が使えます。
手順1:~/.ssh ディレクトリと config ファイルを作る
まず ~/.ssh ディレクトリが存在するか確認し、なければ作成します。パーミッションの設定が最重要で、間違えると SSH が設定ファイルを読み込まないので注意してください。
$ chmod 700 ~/.ssh
$ touch ~/.ssh/config
$ chmod 600 ~/.ssh/config
$ ls -la ~/.ssh/
total 8
drwx—— 2 ubuntu ubuntu 4096 Jun 13 10:09 .
drwxr-xr-x 7 ubuntu ubuntu 4096 Jun 13 10:09 ..
-rw——- 1 ubuntu ubuntu 0 Jun 13 10:09 config
ポイントは ~/.ssh/ のパーミッションが 700(自分だけ読み書き実行可)、config ファイルが 600(自分だけ読み書き可)であることです。
注意:パーミッションを間違えると動かない
Ubuntu 24.04 の Docker コンテナで実際に試すと、config を 644 にした状態で ssh -G myserver を実行すると Bad owner or permissions on /root/.ssh/config というエラーが出て設定が読み込まれませんでした。必ず chmod 600 ~/.ssh/config を実行してください。

手順2:基本的な接続設定を書く
~/.ssh/config を好みのエディタで開き、接続設定を書きます。基本的な構文は以下の通りです。
# VPS サーバーへの接続設定
Host myserver
HostName 203.0.113.10
User ubuntu
IdentityFile ~/.ssh/id_ed25519_myserver
Port 22
# 全サーバー共通の設定
Host *
ServerAliveInterval 60
ServerAliveCountMax 3
AddKeysToAgent yes
IdentitiesOnly yes
書き終えたら ssh -G コマンドで設定が正しく読み込まれているか確認できます。
user ubuntu
hostname 203.0.113.10
port 22
serveraliveinterval 60
identityfile ~/.ssh/id_ed25519_myserver
これで ssh myserver とだけ打てば ubuntu@203.0.113.10 に id_ed25519_myserver で接続できるようになります。

主なオプション一覧
| オプション名 | 説明 | 例 |
|---|---|---|
Host |
エイリアス名(接続時に使う短縮名) | Host myserver |
HostName |
実際のIPアドレスまたはFQDN | HostName 203.0.113.10 |
User |
ログインユーザー名 | User ubuntu |
Port |
SSHポート番号(デフォルト22) | Port 2222 |
IdentityFile |
使用する秘密鍵のパス | IdentityFile ~/.ssh/id_ed25519 |
ServerAliveInterval |
切断防止のキープアライブ間隔(秒) | ServerAliveInterval 60 |
IdentitiesOnly |
指定した鍵だけを使用(他の鍵を試さない) | IdentitiesOnly yes |
ProxyJump |
踏み台サーバー経由で接続 | ProxyJump bastion |
手順3:SSH鍵を生成して config に登録する
設定ファイルに登録する前に、まず Ed25519 形式の SSH 鍵ペアを作成します。Ubuntu 24.04 の OpenSSH_9.6p1 では Ed25519 が推奨形式で、RSA より短い鍵長で同等以上のセキュリティを実現します。
Generating public/private ed25519 key pair.
Enter passphrase (empty for no passphrase):
Your identification has been saved in /home/ubuntu/.ssh/id_ed25519_myserver
Your public key has been saved in /home/ubuntu/.ssh/id_ed25519_myserver.pub
The key fingerprint is:
SHA256:5sTlNv5eYiCbZHkR0ZSjIc8fC69WrObFKbZvA/Krlus your-email@example.com
+–[ED25519 256]–+
| o+.. |
| . ..+ |
| +oo . |
+—-[SHA256]—–+
-f オプションで保存先ファイル名を指定しています。サーバーごとに別の鍵ファイル名にしておくと管理しやすくなります。生成後は公開鍵(.pub ファイル)をサーバーの ~/.ssh/authorized_keys に追記してください。
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: “~/.ssh/id_ed25519_myserver.pub”
Number of key(s) added: 1
# または手動で:
$ cat ~/.ssh/id_ed25519_myserver.pub | ssh ubuntu@203.0.113.10 ‘mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys’
活用例1:複数サーバー・複数アカウントの切り替え
複数のVPSや GitHub の個人・会社アカウントを使い分けるときに、~/.ssh/config は特に便利です。同じ HostName でも Host エイリアス名を変えれば、接続に使う鍵を切り替えられます。
Host github-personal
HostName github.com
User git
IdentityFile ~/.ssh/id_personal
# GitHub(会社アカウント)
Host github-work
HostName github.com
User git
IdentityFile ~/.ssh/id_work
# Vultr VPS(東京リージョン)
Host vultr-tokyo
HostName 108.61.200.100
User root
IdentityFile ~/.ssh/id_work
StrictHostKeyChecking accept-new
実際に ssh -G で確認すると、github-personal では id_personal が、github-work では id_work が正しく選択されます(ubuntu:24.04 OpenSSH_9.6p1 で実証)。
identityfile ~/.ssh/id_personal
$ ssh -G github-work | grep identityfile
identityfile ~/.ssh/id_work
GitHub リポジトリへの push/pull では、リモートURLを git@github-personal:username/repo.git のように書き換えるだけで適用されます。

活用例2:踏み台サーバー経由の接続(ProxyJump)
本番環境では、インターネットから直接アクセスできない内部サーバーに踏み台(バスチョン)サーバー経由でアクセスするケースがあります。ProxyJump を使えば、踏み台サーバーへの接続を自動化できます。
Host bastion
HostName 203.0.113.10
User ubuntu
IdentityFile ~/.ssh/id_ed25519_myserver
# 内部サーバー(bastionを経由して接続)
Host internal
HostName 10.0.0.5
User admin
ProxyJump bastion
IdentityFile ~/.ssh/id_ed25519_myserver
設定後は ssh internal とだけ打てば、自動的に bastion 経由で 10.0.0.5 に接続します。踏み台サーバーに手動でログインして再度 SSH する必要がなくなります。
活用例3:ポートフォワーディングの設定
データベース(MySQL / PostgreSQL)などのサービスに安全にアクセスしたいとき、SSH ポートフォワーディングが使えます。config に書いておくことで毎回オプションを打つ手間が省けます。
Host db-tunnel
HostName 203.0.113.10
User ubuntu
IdentityFile ~/.ssh/id_ed25519_myserver
LocalForward 3307 127.0.0.1:3306
ssh db-tunnel を実行すると、ローカルの 3307 番ポートへの接続がサーバーの MySQL(3306番)に転送されます。mysql -h 127.0.0.1 -P 3307 で接続できます。
Ubuntu 22.04 vs 24.04 の比較(実測)
実際に両方の Docker コンテナを起動して ssh -V と dpkg -l openssh-client を実行した結果です。

22.04(Jammy)では OpenSSH_8.9p1、24.04(Noble)では OpenSSH_9.6p1 がインストールされました(2026-06-13 実測)。~/.ssh/config の構文はほぼ同一ですが、24.04 では StrictHostKeyChecking accept-new など新しいオプション値がより安定して動作します。
よくあるエラーと解決策
①Bad owner or permissions on ~/.ssh/config
最もよく見るエラーです。config ファイルのパーミッションが 644 や 666 になっていると発生します。Ubuntu 24.04 Docker コンテナで実際に再現を確認しました。
-rw-r–r– 1 ubuntu ubuntu 456 Jun 13 config
# 644 だとエラーになる
$ ssh myserver
Bad owner or permissions on /home/ubuntu/.ssh/config
$ chmod 600 ~/.ssh/config # 修正
$ chmod 700 ~/.ssh/ # ディレクトリも確認
fixed: パーミッションを修正しました
②Host 設定が効いていない
Host に書いたエイリアスで接続しても設定が適用されない場合は、インデントが正しいか確認してください。Host 行より後の設定行はスペース4つまたはタブでインデントが必要です。また、ssh -G エイリアス名 で実際に読み込まれた設定値を確認できます。
user ubuntu
hostname 203.0.113.10
port 22
serveraliveinterval 60
identityfile ~/.ssh/id_ed25519_myserver
# 期待通りの値が表示されれば設定は正しく読み込まれています
③Host * の設定が特定ホストに干渉する
Host *(全サーバー共通設定)は 必ずファイルの末尾に書くのがルールです。SSH の config ファイルは上から順に評価され、最初にマッチした設定が優先されます。Host * を先頭に書くと個別設定が上書きされるので注意してください。
まとめ
Ubuntu 24.04(OpenSSH_9.6p1)で ~/.ssh/config を使う場合のポイントをまとめます。
~/.ssh/を 700、configを 600 に設定する(パーミッションエラーの防止)Host エイリアス名で接続先ごとに設定をまとめるIdentityFileで鍵ファイルを明示し、IdentitiesOnly yesで余計な鍵を試さないようにするHost *の共通設定はファイルの末尾に書くssh -G ホスト名で設定が正しく読み込まれているか確認する- GitHub の複数アカウントは
Host github-personal/Host github-workで切り替え可能 - 踏み台サーバー経由の接続は
ProxyJumpで自動化できる
SSH の設定ファイルをひとつ整えるだけで、毎日のサーバー操作がかなり楽になります。VPSを借りてサーバーを運用する場合は、最初にこの設定をしておくことをおすすめします。
ひとこと
実際に ubuntu:24.04 のコンテナで ssh -G を実行すると、config で指定した値がそのまま反映されているのが分かります。設定がうまく効いていないときはまずこのコマンドで確認してみてください。
本格的にVPSを借りてサーバーを運用したい方は、初期設定から SSH 鍵認証の有効化まで詳しく解説しています。
[LINK_ubuntu-ssh-setup_ARTICLE]


コメント