特定の SSH キーを使う方法
SSH に特定の秘密鍵を強制的に使わせるには、-i でそれを指定します:
ssh -i ~/.ssh/work_key user@host ホストごとに永続的に設定し、SSH が他のキーを先に試すのを止めるには、~/.ssh/config で IdentityFile と IdentitiesOnly を使います。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 git@github.com:user/repo.git 複数の Git アカウントを使うなら設定方式の方が優れています:それぞれに自分の Host エイリアス(例 github-work)を与え、そのエイリアスで clone します。
スマートフォンで
モバイルクライアントは ~/.ssh/config を使いません——接続ごとにキーを固定します。TermAI では保存された各接続が独自の認証設定を持つので、「このサーバーにこの特定のキーを使う」は単にその接続でキーを選ぶだけです;それはちょうどそのキーだけを提示します。IdentitiesOnly に相当するものは自動なので、キーが多すぎるエラーに引っかかることは決してありません。
よくある質問
SSH に特定のキーを使わせるには?
単一のコマンドには ssh -i ~/.ssh/key user@host を使うか、永続的なホストごとの選択には ~/.ssh/config の Host ブロックで 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/configのHostごとにIdentityFile+IdentitiesOnly yes - Git:ホストごとの設定、または単一コマンドの
GIT_SSH_COMMAND - なぜ IdentitiesOnly:
-iだけだと他のキーも提示する → too-many-auth - モバイル:接続ごとにキーを選ぶ(IdentitiesOnly は自動)
Free on iOS and Android. 5 AI requests/day on the free tier, plus unlimited SSH/SFTP and built-in Tailscale.