はじめに
SSH鍵ファイルをFinderで名前変更したところ、SSH接続ができない問題が発生しました。
最終的にはただ単にssh keyの拡張子が違っていたことが原因でした、他のファイルの拡張子が表示されているのをいいことに、安心していたことで時間を無駄にしたので反省文を残します。
発生した問題
問題の発生
VPSでSSH鍵を生成し、秘密鍵をローカルにダウンロードした際、ファイル名がid_rsa.txtになっていました。SSH configではid_rsaを指定していたため、Finderで拡張子を削除したつもりでしたが、実際にはファイル名は変更されていませんでした。
最初からターミナルで操作していれば問題は起きませんでしたが、GUIでファイル名を変更したことが原因の一つです。
エラー内容
% ssh hogehoge
ssh: connect to host xxx.xxx.xxx.xxx port 22: Network is unreachable
このエラーメッセージから、ネットワーク接続の問題に見えますが、実際はファイル名の問題でした。
他の人はつなげているのに、自分だけ繋がらない場合はssh configのssh keyが違うとか、ファイル参照場所が違うとか、IPアドレスが間違ってるとかの設定ミスだと思います。
macOSのFinder拡張子表示設定の問題
macOSのFinderでは、デフォルトで「すべてのファイル名拡張子を表示」がオフになっています。この状態で.txtファイルをFinderで名前変更する際に拡張子を削除しようとしても、拡張子が隠されているだけで実際のファイル名は変更されません。
- Finderでは拡張子なしで表示される(拡張子が隠されている)
- 実際のファイル名は
.txt拡張子付きのまま -
lsコマンドで確認すると.txt拡張子が残っている
# SSH configでの設定
Host hogehoge
HostName xxx.xxx.xxx.xxx
User fugafuga
IdentityFile ~/.ssh/id_rsa # 拡張子なしを期待
# Finderでの表示
id_rsa # 拡張子なしで表示される
# 実際のファイル名(lsコマンドで確認)
~/.ssh/id_rsa.txt # 実際は.txt拡張子付きのまま
問題の本質
-
Finderの表示:
id_rsa(拡張子なしに見える) -
実際のファイル名:
id_rsa.txt(拡張子あり) -
SSH configの指定:
id_rsa(拡張子なし)
この不一致により、SSHクライアントは指定されたファイルを見つけることができませんでした。
解決方法
1. 現状確認
まず、ターミナルで実際のファイル名を確認します:
# SSH鍵ディレクトリの内容確認
ls -la ~/.ssh/
# -> id_rsa.txt が表示される(実際のファイル名)
2. 正しいファイル名に変更
ターミナルで正しいファイル名に変更します:
# 正しいファイル名に変更
mv ~/.ssh/id_rsa.txt ~/.ssh/id_rsa
# permissionのエラーが出る場合は以下を実行してください
chmod 600 ~/.ssh/id_rsa
根本的な解決策
方法1: Finder全体の拡張子表示設定を有効にする
今後同様の問題を避けるため、Finderで常に拡張子を表示するように設定します:
- Finderを開く
- Finder > 設定... を選択
- 詳細タブをクリック
- すべてのファイル名拡張子を表示にチェックを入れる
この設定により、FinderでもGUIから正しくファイル名を変更できるようになります。
- before
- after
拡張子を消すと、小さいですがアイコンが真っ白になります(いや、わからん)
方法2: ターミナルでファイル名を変更する
拡張子表示設定を変更したくない場合は、ターミナルで直接変更できます:
mv ~/.ssh/id_rsa.txt ~/.ssh/id_rsa
ちなみに・・・
リスト形式ではなく、アイコン形式で表示したら一発でわかりました。
まとめ
今回の問題の本質は:
- Finderの拡張子表示設定がオフだったこと
- エラーメッセージの誤解釈
lsコマンドでの確認を怠ったこと
重要なポイント:
- Finderの拡張子表示設定をオンにすれば、GUIからでも正しくファイル名を変更できる
- または、ターミナルで確実にファイル名を変更できる
- 問題が発生したら、まず
lsコマンドで実際のファイル名を確認する - エラーメッセージだけでなく、設定と実際のファイル状態を照合する
最初からlsコマンドでファイル名を確認していれば、すぐに原因がわかったはずです。また、Finderの拡張子表示設定をオンにしておけば、GUIからでも正しくファイル名を変更できました。




