Linuxを始めてしばらく経つと、こういう悩みが出てきます。接続先が増えるほど、IPアドレスや秘密鍵のパスを覚えきれなくなり、過去のコマンド履歴を掘り返す手間も増えていきます。
その悩みを根本から解決するのが SSH設定ファイル(~/.ssh/config) です。接続先の情報をあらかじめ登録しておけば、
ssh myserver と短い名前を打つだけで目的のサーバーへ接続できます。この記事では、~/.ssh/config の書き方と使い方を、WSL2・VPS環境を使う初心者向けにゼロから解説します。公開鍵認証でVPSに接続できる状態から始めて、設定ファイルで複数のサーバーを名前で管理できるところまでハンズオンで体験しましょう。
この記事のポイント
・~/.ssh/configに書くとssh 名前だけでサーバーに接続できる
・Host・HostName・User・IdentityFile・Portで接続先を設定する
・複数のサーバーを本番/開発/VPSなど名前で使い分けられる
・パーミッションはchmod 600 ~/.ssh/configの設定が必須
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
なぜSSH設定ファイルを使うと便利なのか
SSH接続の基本コマンドは次のような形です。# 基本的なSSH接続コマンド ssh ubuntu@203.0.113.10 -i ~/.ssh/id_rsa -p 22
・どのIPアドレスがどのサーバーか覚えられない
・秘密鍵のパスが違う場合、どの鍵を使うか毎回確認しなければならない
・ポート番号が22番以外のサーバーは特に入力が長くなる
~/.ssh/config を使えば、こうした情報をあらかじめファイルに書いておき、
ssh サーバー名 の短いコマンドだけで接続できるようになります。設定ファイルは一度書けば永続的に使えるため、日々の作業効率が大きく上がります。~/.ssh/configの準備と基本的な書き方
1. .sshディレクトリとconfigファイルを準備する
WSL2やLinux環境でターミナルを開き、以下の手順で設定ファイルを作成します。# .ssh ディレクトリが存在するか確認 ls -la ~/.ssh # なければ作成する(すでにある場合はスキップ) mkdir -p ~/.ssh chmod 700 ~/.ssh # configファイルを作成して開く(nanoを使う場合) nano ~/.ssh/config
chmod 600 ~/.ssh/config
2. Hostブロックで接続先を登録する
~/.ssh/config の書き方の基本は「Hostブロック」です。1つのサーバーに対して1つのブロックを書きます。Host myserver HostName 203.0.113.10 User ubuntu IdentityFile ~/.ssh/id_rsa Port 22
・Host:接続時に使うニックネーム(自由に付けられる)
・HostName:実際のIPアドレスまたはドメイン名
・User:ログインするユーザー名
・IdentityFile:使用する秘密鍵のパス
・Port:SSHのポート番号(デフォルトは22。変更していない場合は省略可)
3. ssh 名前 で接続する
設定ファイルに書いたら、ターミナルから以下のコマンドで接続できます。ssh myserver
Welcome to Ubuntu 24.04.2 LTS (GNU/Linux 6.8.0-51-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com Last login: Sun Aug 24 09:15:32 2026 from 203.0.113.50 ubuntu@web01:~$
ubuntu@web01:~$ というプロンプトが表示されれば接続成功です。ssh ubuntu@203.0.113.10 -i ~/.ssh/id_rsa -p 22 と打っていたのが ssh myserver の一言で済むようになりました。複数のサーバーを名前で使い分ける
1. 本番・開発・VPSを1つのファイルにまとめる
Hostブロックは何個でも追加できます。実際の現場では次のような構成がよく使われます。# 本番サーバー Host prod HostName 203.0.113.10 User ubuntu IdentityFile ~/.ssh/id_rsa_prod Port 22 # 開発サーバー(ポート番号が違う例) Host dev HostName 198.51.100.5 User developer IdentityFile ~/.ssh/id_rsa_dev Port 2222 # ConoHaのVPS Host conoha-vps HostName 198.51.100.20 User root IdentityFile ~/.ssh/id_rsa_conoha Port 22
ssh prod # 本番サーバーへ接続 ssh dev # 開発サーバーへ接続 ssh conoha-vps # ConoHaのVPSへ接続
2. ワイルドカード(Host *)でデフォルト設定をまとめる
Host * と書くと、全ての接続に共通で適用される設定を書けます。よく使われるのはタイムアウト防止の設定です。# 全サーバー共通のデフォルト設定(ファイルの末尾に書く) Host * ServerAliveInterval 60 ServerAliveCountMax 3
ServerAliveInterval 60 は「60秒ごとにサーバーに生存確認を送る」設定です。操作していない時間が続いても接続が切れにくくなります。Host * は個別のHostブロックより後(ファイルの末尾)に書くのが慣習です。よく使う設定オプション一覧
日常的な作業でよく使う設定オプションをまとめます。| オプション名 | 説明 | 例 |
|---|---|---|
| Host | 接続時に使うニックネーム | Host myserver |
| HostName | 実際のIPアドレスまたはドメイン | HostName 203.0.113.10 |
| User | ログインユーザー名 | User ubuntu |
| IdentityFile | 使用する秘密鍵のパス | IdentityFile ~/.ssh/id_rsa |
| Port | SSHのポート番号(省略時は22) | Port 2222 |
| ServerAliveInterval | タイムアウト防止の確認間隔(秒) | ServerAliveInterval 60 |
| ProxyJump | 踏み台サーバー経由で接続する | ProxyJump bastion |
# 踏み台サーバー Host bastion HostName 203.0.113.1 User ec2-user IdentityFile ~/.ssh/id_rsa # 踏み台経由でのみ接続できる内部サーバー Host internal-server HostName 10.0.1.5 User ubuntu IdentityFile ~/.ssh/id_rsa ProxyJump bastion
ssh internal-server と入力するだけで、踏み台への接続 → 内部サーバーへの接続を自動でつなぎます。よくあるトラブルと対処法
1. 「Bad owner or permissions」エラーが出る
~/.ssh/config のパーミッションが正しくない場合に発生します。# エラーメッセージの例 Bad owner or permissions on /home/ubuntu/.ssh/config # 対処法:パーミッションを600に設定 chmod 600 ~/.ssh/config ls -la ~/.ssh/config # -rw------- 1 ubuntu ubuntu 214 Aug 24 09:30 /home/ubuntu/.ssh/config
-rw-------(所有者のみ読み書き可)になっていることを確認してください。2. 設定が反映されない・接続できない
ssh -v(verbose)オプションを付けると、どの設定ファイルを読んでいるか、どの鍵を試しているかが表示されます。ssh -v myserver # 出力例(一部) OpenSSH_9.6p1 Ubuntu-3ubuntu13.5, OpenSSL 3.0.13 11 Feb 2024 debug1: Reading configuration data /home/ubuntu/.ssh/config debug1: /home/ubuntu/.ssh/config line 1: Applying options for myserver debug1: Connecting to 203.0.113.10 [203.0.113.10] port 22.
Reading configuration data /home/ubuntu/.ssh/config と表示されていれば、設定ファイルは読み込まれています。Applying options for myserver が表示されれば、Host名も正しく認識されています。3. WSL2でWindowsのSSH鍵を参照したい場合
WSL2では、LinuxファイルシステムからWindows側のファイルにアクセスできます。WSL2内で ~/.ssh/config を書く場合、Windows側の鍵を参照したければ次のようなパスを使います。# Windowsのユーザーフォルダ(例: ユーザー名がtomohiro)の.sshフォルダを参照する例 IdentityFile /mnt/c/Users/tomohiro/.ssh/id_rsa
本記事のまとめ
~/.ssh/config を使うと、長いSSHコマンドを短縮名1つで呼び出せるようになります。設定の要点をまとめます。| やりたいこと | 設定または操作 |
|---|---|
| configファイルを作成する | nano ~/.ssh/config |
| パーミッションを設定する | chmod 600 ~/.ssh/config |
| 接続先をニックネームで登録する | Hostブロックに Host・HostName・User・IdentityFile・Portを書く |
| ニックネームで接続する | ssh ニックネーム名 |
| タイムアウトを防ぐ | Host * ブロックに ServerAliveInterval 60 を書く |
| 設定が反映されない時の確認 | ssh -v ニックネーム名 |
Linux学習をさらに深めるための関連記事
SSH設定ができたら、次はLinuxのサーバー管理・セキュリティ・自動化スキルを深めていきましょう。・firewall-cmdコマンドでファイアウォールを設定する方法|ポート開放やゾーン管理も
・bashで関数を定義して再利用する方法|シェルスクリプトのライブラリ化と実践例
・Linuxサーバー構築の標準構成ガイド|Webアプリ向けディレクトリ・サービス・パーティション設計
・AIにLinuxトラブルを解析させる方法|journalctl・dmesgのログをChatGPT・Claudeに渡すコツ
・digコマンドでDNS問い合わせを行う方法|正引き・逆引きやレコードタイプ別の使い方も
・Linuxサーバーのスワップ領域を設計・拡張する方法|物理メモリ別の推奨容量とswapfile作成
・timedatectlコマンドでLinuxのタイムゾーンと時刻を設定する方法|NTP有効化から確認手順まで
無料の「Linuxサーバー構築入門マニュアル(図解60ページ)」をプレゼントしています。
コマンドを「なんとなく打つ」段階から卒業したい方は、ぜひ受け取ってみてください。
無料マニュアルを受け取る >>
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら
- 前のページへ:LinuxでFlaskアプリを動かす入門|PythonウェブアプリをWSL2やVPSにデプロイする方法
- この記事の属するカテゴリ:【Linux入門】初心者のための基礎知識・講座へ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。
登録無料・いつでも解除できます