チュートリアル

特定の SSH キーを使う方法(ホストごと、そして Git 用)

-i で SSH に 1 つの秘密鍵を使わせ、~/.ssh/config の IdentityFile + IdentitiesOnly でホストごとに永続化し、ホストエイリアスか GIT_SSH_COMMAND で Git に特定のキーを使う。

CC Chen Chen· 創業者·2026年6月24日·5 分で読めます

特定の SSH キーを使う方法

SSH に特定の秘密鍵を強制的に使わせるには、-i でそれを指定します:

ssh -i ~/.ssh/work_key user@host

ホストごとに永続的に設定し、SSH が他のキーを先に試すのを止めるには、~/.ssh/configIdentityFileIdentitiesOnly を使います。Git なら、最もすっきりした答えはホストごとの設定か GIT_SSH_COMMAND です。それぞれ見ていきましょう。

単発:-i フラグ

ssh -i ~/.ssh/work_key user@host

手早いテストには便利です。ただし単体では、-i はそのキーを SSH が試すキーに追加するだけです——複数のキーが読み込まれていると、それでも他のキーを先に提示し、too many authentication failures に当たることがあります。このキーだけを提示するには、-o IdentitiesOnly=yes を加えます:

ssh -i ~/.ssh/work_key -o IdentitiesOnly=yes user@host

永続的に:~/.ssh/config でホストごと

「このサーバーには常にこのキーを使う」の正しいやり方——一度設定すれば忘れてよい:

Host work
    HostName 203.0.113.7
    User deploy
    IdentityFile ~/.ssh/work_key
    IdentitiesOnly yes

これで ssh work はちょうどそのキーを使い、他は何も提示しません。IdentitiesOnly yes が重要な行です——これがないと、クライアントはやはり他のキーをサーバーの前で先に並べてしまいます。(設定ファイルの詳細は SSH 設定ファイルガイド。)

Git に特定のキーを使う

すっきりした選択肢が 2 つ。ホストごとの設定——Git ホストに自分のキーを持つエイリアスを与えます:

Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/github_key
    IdentitiesOnly yes

または、単一のコマンドには、Git が使う SSH コマンドを上書きします:

GIT_SSH_COMMAND="ssh -i ~/.ssh/github_key -o IdentitiesOnly=yes" git clone [email protected]:user/repo.git

複数の Git アカウントを使うなら設定方式の方が優れています:それぞれに自分の Host エイリアス(例 github-work)を与え、そのエイリアスで clone します。

スマートフォンで

モバイルクライアントは ~/.ssh/config を使いません——接続ごとにキーを固定します。TermAI では保存された各接続が独自の認証設定を持つので、「このサーバーにこの特定のキーを使う」は単にその接続でキーを選ぶだけです;それはちょうどそのキーだけを提示します。IdentitiesOnly に相当するものは自動なので、キーが多すぎるエラーに引っかかることは決してありません。

特定のキーを 1 つ設定したスマートフォンの SSH 接続
モバイルでは接続ごとにキーを選びます——IdentityFile + IdentitiesOnly に相当し、フォームで一度だけ設定します。

よくある質問

SSH に特定のキーを使わせるには?
単一のコマンドには ssh -i ~/.ssh/key user@host を使うか、永続的なホストごとの選択には ~/.ssh/configHost ブロックで IdentityFile を設定します。IdentitiesOnly yes を加えると、そのキーだけが提示されます。

IdentitiesOnly は何をする?
エージェントと ~/.ssh 内の他のすべてのキーをクライアントが提示するのを止めます。これがないと、-i はあなたのキーをリストに追加するだけで、"too many authentication failures" を引き起こすことがあります。

Git に特定の SSH キーを使うには?
ホストに自分の IdentityFile を持つ ~/.ssh/config ブロックを与えるか、単一のコマンドには GIT_SSH_COMMAND="ssh -i ~/.ssh/key -o IdentitiesOnly=yes" を設定します。

GitHub アカウントごとに異なるキーを使えますか?
はい——~/.ssh/config にアカウントごとに Host エイリアスを作り、それぞれに自分のキーを持たせ、そのエイリアスを使って clone します。

クイックファクト

  • 単発:ssh -i ~/.ssh/key -o IdentitiesOnly=yes user@host
  • 永続的:~/.ssh/configHost ごとに IdentityFile + IdentitiesOnly yes
  • Git:ホストごとの設定、または単一コマンドの GIT_SSH_COMMAND
  • なぜ IdentitiesOnly:-i だけだと他のキーも提示する → too-many-auth
  • モバイル:接続ごとにキーを選ぶ(IdentitiesOnly は自動)
Try TermAI

Free on iOS and Android. 5 AI requests/day on the free tier, plus unlimited SSH/SFTP and built-in Tailscale.

CC
Chen Chen — Founder of TermAI

Writes about mobile DevOps, terminal UX, and the surprising depth of "boring" infrastructure.

Was this useful? ← Back to blog