SSH鍵とは|パスワードより安全な理由と設定で丸1日溶かした話

SSH鍵とは|パスワードより安全な理由と設定で丸1日溶かした話

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日溶かした話

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

52歳、自営業。エンジニアではない。コードは書けない。

ある日Xで「VPSにClaude Codeを入れると24時間AIが働いてくれる」という投稿を見て、その日のうちにVPSを契約した。意味はよくわかっていなかった。

Geminiを通訳にしながら、Claudeに丸投げしながら、tmuxに出られなくなったり、パスワードをチャットに貼ったり、SSH鍵で1日溶かしたりしながら、気づいたら声でメモを取ってメールが来る生活になっていた。

エンジニアじゃなくても、なんとかなってる。たぶん

コメント

コメントする

目次