この話は長い。心の準備をしてほしい。
SSH鍵って何ですか
VPSにSSH接続するとき、最初はパスワード認証でログインしていた。
毎回パスワードを打ち込む。
それでも動いているので、特に問題だとは思っていなかった。
あるときGeminiに「VPSのセキュリティを高める方法」を聞いたら、「SSH鍵認証に切り替えることをおすすめします」と言われた。
パスワード認証よりも安全で、慣れると接続も楽になる、と。
SSH鍵というのは、「公開鍵」と「秘密鍵」のペアを作って、公開鍵をサーバーに登録しておく仕組みだ。
接続するときにパスワードの代わりに鍵が照合される。
秘密鍵を持っている人しかログインできないので、パスワードが漏れても大丈夫、ということらしい。
Geminiの説明を読んでなんとなくわかった気がした。
やってみよう。
これが間違いの始まりだった。
TeraTermで鍵を作ろうとした
最初にTeraTermでSSH鍵を設定しようとした。
TeraTermにはSSH鍵を生成する機能がある。
メニューから操作して、鍵のペアを作れる。
Geminiに手順を教えてもらいながら進めた。
公開鍵と秘密鍵が生成された。よし。
次に公開鍵をVPSのサーバーに登録する必要がある。~/.ssh/authorized_keysというファイルに公開鍵の内容を書き込む、ということらしい。
これもGeminiに教わりながら操作した。書き込んだ。
TeraTermで接続してみた。
パスワードを聞いてくる。
あれ、鍵認証になっていない。
何度やっても同じだ。どこかの手順が間違っているのか、設定が反映されていないのか、まったくわからない。
Geminiに「なぜ鍵認証にならないのか」を聞きながら一つひとつ確認していくが、原因が特定できない。
気づいたら2時間が過ぎていた。
VSCodeでもやってみた
TeraTermでうまくいかないので、VSCodeのRemote SSHで接続する方法に切り替えてみた。
VSCodeにはSSH接続を管理する拡張機能があって、そこから鍵認証の設定ができる。
またGeminiに手順を聞きながら設定した。鍵ファイルのパスを設定ファイルに書いて、接続を試みる。
接続できた。
と思ったら、パスフレーズを求めてきた。
鍵を作るときにパスフレーズを設定していたので、それを入力する必要があった。
入力したらログインできた。
でも「1タップで接続」というイメージとは違う。
毎回パスフレーズを入力するなら、パスワード認証とあまり変わらない気がした。
パスフレーズなしで鍵だけで繋がる方法があるはずだ、とGeminiに聞いた。
ssh-agentというものを使うと、パスフレーズを一度入力するだけで次回から省略できる、と教わった。
設定してみたが、VSCodeを再起動するたびにリセットされる。
永続化する方法を調べていたら、また時間が溶けた。
CodespacesはVPSとは別の話だった
混乱に拍車をかけたのが、GitHub Codespacesの存在だ。
Claude Codeを最初に触ったときにCodespacesも使っていたので、「Codespaces側でSSH鍵を設定すればVPSにもつながるのでは」と思っていた時期があった。
Geminiに聞いたら、そういう話ではないと言われた。
CodespacesはGitHubが提供するクラウド開発環境で、VPSとは完全に別物だ。
Codespacesの中にSSH鍵を置いても、自分のVPSへの接続とは何の関係もない。
全く別の環境だ。
「え、そうなの?」と思った。
なんとなく同じクラウドの上で動いているから繋がっているものだと思っていたが、全然違った。
これに気づかずにCodespacesの設定を一生懸命いじっていた時間があった。
何をやっても当然うまくいかない。
全く関係ない場所を触っていたのだから。
Termiusで一発だった
もう一日がほぼ終わりかけていた頃、スマホアプリのTermiusを試してみた。
Termiusはスマホやタブレットからサーバーに接続するSSHクライアントだ。
以前から入れていたが、SSH鍵の設定はまだしていなかった。
アプリを開いて、鍵の設定画面を探した。
Termiusには鍵の管理機能が最初から整っていて、操作がシンプルだった。
秘密鍵ファイルをインポートして、接続先のサーバーに紐付ける。
接続してみた。
パスワードもパスフレーズも聞かれずに、一瞬でログインできた。
あれだけ苦労していたのに、Termiusは設定から接続成功まで10分かかっていない。
画面の設計が直感的で、どこに何を入れればいいかが一目でわかった。
TeraTermやVSCodeで格闘していた時間は何だったんだと思ったが、あの時間があったからTermiusの簡単さが際立った、
と思うことにした。
快適な環境を手に入れた、と思っていた
Termiusで自宅からの接続が安定してから、調子に乗って職場でも同じように設定した。
職場のパソコンでも同様の手順で鍵を設定して、接続を試みた。
なんとなく同じようにやったら、繋がった。
これは嬉しかった。
自宅でも職場でも、スマホでも、どこからでもVPSにつながる環境ができた。
Termiusを開けば一瞬でログインできる。まさに「快適な環境を手に入れた」という感覚だった。
その日の夜、自宅に帰ってVSCodeからVPSに繋ごうとした。
VSCodeから繋がらなくなった
繋がらなくなっていた。
VSCodeのRemote SSHで接続しようとしても、エラーが出て先に進めない。
Termiusからは繋がるのに、VSCodeだけが通らない。
昨日まで普通に使えていたのに。
パスワードを変えたわけでも、鍵を変えたわけでも、何か設定を変えたつもりもない。
Geminiに状況を説明しながら一つずつ確認していったら、どうやら職場で設定をいじったときに、触ってはいけない部分を触ってしまっていたらしい。
「なんとなく同じように」やったのが仇になった。
職場側の設定をしようとして、サーバー側の設定を変えてしまっていたようだ。
正確に何をしてしまったのかは今でもよくわかっていない。
Geminiに言われた通りに直したら繋がるようになったが、根本的に何が起きていたのかは理解できていない。
そういうことが、この10日間には結構あった。
また無駄な時間が過ぎていった。
丸1日で学んだこと
SSH鍵の仕組み自体は難しくない。
公開鍵をサーバーに登録して、秘密鍵で接続する。
それだけだ。
ただ、その「それだけ」を実現するための操作が、ツールによって全然違う。
TeraTermには独自の手順があって、VSCodeには別の設定方法があって、Termiusはまた別の流れがある。
どのツールの説明を読んでも「SSH鍵認証を設定する方法」として書いてあるのに、手順がバラバラで混乱する。
それに、CodespacesとVPSは別物だ。
これは声を大にして言いたい。
クラウドの上で動いているからといって、繋がっているわけではない。
全然関係ない。
丸1日かけて学んだのはこの2点だった。
SSH鍵の設定そのものより、「どのツールで何をするか」の整理に時間の大半を使った気がする。
今はTermiusのアイコンをタップするだけでVPSに繋がる。
あの1日は無駄じゃなかった。たぶん。
← 前の話|第5話|GmailのアプリパスワードをAIのチャット欄に貼り付けてしまった話 | 次の話|第7話|iPhoneで喋ったら10分後にメールが来る仕組みを作った話 →

コメント