SSH接続ってなに?なレベル人のための記事です。
この間業務で「踏み台サーバーを経由してDBにSSH接続」したのですが、自分が何を・何のためにしているのかよくわからなかったので整理しました。
結論
「踏み台サーバーへSSH接続する」とは?
=> クライアントから踏み台サーバに、セキュリティ的に堅牢な経路を確立してアクセスするということ
と言っても、ピンと来ないと思うので、次節以降言葉の定義に焦点を当ててみましょう。
キーワードは「踏み台サーバ」「SSH接続」
手続き面の話をすると「セキュリティ的に堅牢な経路を確立する」の内実がわかると、何をしているのか理解しやすくなるはずです。
踏み台サーバー
サーバという言葉は多義的な概念で、大まかに「何らかサービスの提供者」という概念を示しています。
中でも、踏み台サーバーは、「接続したいサーバ」との間を仲介してくれる存在で、「接続したいサーバと直に繋がれるのはセキュリティ上怖いから、一旦踏み台挟んでチェックしよう」といった役割を期待されています。
例えば、踏み台サーバを用いることで、クライアントの認証を一元管理できます。
そのため、誰がいつ、何をしたのか、追跡することができます。
また、特定のIPアドレスからの接続のみ許可するなど、細かい制御も可能になります。
こうした特徴は、セキュリティ管理の観点からして効率の良さを覚えますね
SSH接続
SSHはSecure Shellの略で、ネットワークを通じて別のコンピュータに安全に接続するためのプロトコルです。暗号化された経路をクライアント・サーバ間に確保し、セキュリティ面に優れた接続を実現します。認証方法は色々ありますが、一般的には公開鍵暗号が採用されます。
踏み台サーバーを経由してデータベースに接続する方法は、一般的にはSSHトンネリングと呼ばれます。
なぜSSH接続において公開鍵暗号方式が用いられるのか
メリットはいくつかありますが、代表的なものは以下です:
- リモートサーバに接続するために毎回パスワードを送信する必要がなくなる
- 秘密鍵はクライアントから離れることがないので、セキュリティ的に強い。
- 公開鍵で暗号化したものは、対応する秘密鍵を持つ人しか複合化できないので、セキュリティ的に強い。(2回目)
公開鍵認証を用いる場合、サーバに接続するための「パスワード」の存在は薄くなります。代わりに、公開鍵をサーバに登録しておくことで、それに対応する秘密鍵を持つクライアントからの接続を許可する形を採用します。
ここがピンと来ない人は、おそらく公開鍵暗号方式でDBに接続する流れをよくわかっていない可能性が高いです(私がそうでした)
ポイントは、公開鍵を用いた認証は相互に行われるという点にあります。
公開鍵と秘密鍵の交換は、クライアントとサーバ間で相互に行われるのです。
簡単に公開鍵暗号を用いてリモートサーバーに接続する手順をおさらいします:
- 踏み台サーバーに初めてSSH接続を行う際、クライアントはサーバの公開鍵を受け取る。これは、サーバーが正当なものであることを保証する。(公開鍵と対応する秘密鍵を持つサーバでないと、次回以降クライアントからのリクエストを処理することができない)
- 上記とは別の話として、クライアントもまた、自身の公開鍵と秘密鍵を生成し、サーバに公開鍵を登録する。これにより、公開鍵に対応する秘密鍵を持つクライアントのみサーバに接続することができるようになる。
最後に
SSH接続と、公開鍵認証方式の堅牢さには驚かされますね。特に、相互に認証し合うという発想は目から鱗でした。
この記事が、少しでも皆さんのお役に立ったら嬉しいです。