SSH鍵というものを知ったのは、VPSを使い始めてしばらく経ってからだ。
最初はパスワードでログインしていた。
毎回パスワードを打ち込む。
それで普通に動いていたので、特に問題だとは思っていなかった。
Geminiに「VPSのセキュリティを上げる方法」を聞いたときに、初めてSSH鍵というものを知った。
「パスワード認証よりSSH鍵認証のほうが安全で、慣れると接続も楽になります」
そう言われたので設定してみようとした。そこから丸1日が溶けた。
そもそもSSHって何
SSH鍵の前に、SSHについて説明する。
SSH(Secure Shell)というのは、ネットワーク越しにサーバーに安全に接続するための仕組みだ。
VPSを使うとき、TeraTermやTermius、VSCodeのRemote SSHといったツールから接続するが、その接続に使われているのがSSHだ。
「安全に」というのは、通信が暗号化されているということだ。
パスワードや操作内容が外から盗み見られないようになっている。
SSH鍵とは何か
SSH鍵というのは、「公開鍵」と「秘密鍵」という2つのファイルのペアだ。
鍵と鍵穴のイメージで考えるとわかりやすい。公開鍵が鍵穴で、秘密鍵が鍵だ。
公開鍵をサーバーに登録しておいて、手元に秘密鍵を持っておく。
接続するときに「自分はこの秘密鍵を持っています」ということをサーバーに証明する。
サーバー側は登録してある公開鍵と照合して、一致すれば接続を許可する。
パスワード認証と何が違うかというと、秘密鍵ファイルを持っている人しかログインできないので、パスワードが漏れても関係ない、という点だ。
パスワードは文字列なので盗まれる可能性があるが、秘密鍵ファイルは手元にしかない。
もう一つのメリットは「接続が楽になる」ことだ。
鍵の設定をしておくと、毎回パスワードを打ち込まなくていい。
ツールを開いてタップするだけでログインできる。
設定がツールによって全然違う
理屈はわかった。設定してみよう、と思ってから地獄が始まった。
SSH鍵の設定方法が、使うツールによって全然違うのだ。
TeraTermにはTeraTermなりの手順がある。
VSCodeのRemote SSHには別の設定ファイルがある。
Termiusはまた独自のインターフェースで管理する。
どのツールの説明を読んでも「SSH鍵を設定する方法」として書いてあるのに、手順がバラバラで頭が混乱する。
さらに混乱に拍車をかけたのがCodespacesの存在だ。
Claude Codeを使い始めたとき、GitHub CodespacesというサービスもVPSと並行して触っていた。
なんとなく「Codespaces側でSSH鍵を設定すればVPSにも繋がるのでは」と思ってCodespacesの設定をいじっていた時間があった。
Geminiに聞いて初めてわかった。
CodespacesとVPSは完全に別物だ。
Codespacesで何をしてもVPSとは無関係だ。
全然関係ない場所をいじっていた。
TeraTermで詰まり、VSCodeで詰まり
最初にTeraTermでSSH鍵を設定しようとした。
Geminiに手順を聞きながら鍵のペアを生成して、公開鍵をサーバーに登録した。
接続してみたら、パスワードを聞いてくる。
鍵認証になっていない。
何が間違っているのかわからないまま、2時間くらい格闘した。
次にVSCodeのRemote SSHで試してみた。
設定ファイルに鍵のパスを書いて、接続を試みると繋がった。
ただしパスフレーズを毎回聞いてくる。
パスフレーズなしで接続できる方法を調べていたら、またそこで時間が溶けた。
Termiusで一発だった
もう一日が終わりかけていたころ、スマホアプリのTermiusを試してみた。
Termiusは鍵の管理画面がシンプルで、秘密鍵ファイルをインポートして接続先に紐付けるだけでよかった。
設定から接続成功まで10分もかからなかった。
あの丸1日は何だったんだ、という気持ちになったが、TeraTermとVSCodeで格闘した時間があったからこそ、Termiusのシンプルさがよくわかった、と思うことにした。
SSH鍵を使うときの注意点
秘密鍵ファイルは絶対に他人に渡してはいけない。
秘密鍵を持っている人は誰でもサーバーにログインできる。
パスワードと同じように、むしろパスワード以上に厳重に管理する必要がある。
クラウドに自動バックアップされるフォルダに置かない、人に送らない、チャットに貼らない。
SSH鍵の設定に丸1日かかった苦労話は第6話に詳しく書いた。興味があれば読んでみてほしい。
まとめ
SSH鍵とは、サーバーにパスワードなしで安全に接続するための仕組みだ。
公開鍵をサーバーに登録して、秘密鍵を手元に持っておく。
接続するとき鍵が照合されてログインできる。
パスワードより安全で、慣れると接続がワンタップになって楽だ。
設定はツールによって手順が違うので、使っているツールの手順を調べてほしい。
個人的にはTermiusが一番シンプルだった。
関連記事:第6話|SSH鍵の設定に丸1日溶かした話


コメント