(イメージで掴む)SSH、公開鍵、秘密鍵
ITの世界はよくわからない横文字やアルファベットに溢れていると感じます(特にアルファベット3文字が多い)。
SSHもその1つでした。まだ深いところまで理解できていない部分もありますが、自分なりのSSHの解釈とそれに関連する公開鍵・秘密鍵について、初心者がざっくりとイメージで掴めるようにということを意識して記事を書きます!
SSHとは
SSHとは「Security Shell」の略称で、簡単に言うとデータを暗号化して通信する仕組みです。主に遠隔でコンピューター機器を操作する際などに使用します。
具体例で話すと、例えばAWSを用いて自分のサービスを公開するとします。その際、作成したインスタンス(サーバー)に接続して操作することがあるかと思いますが、そういった際にSSHは用いられたりします。SSHで接続すると、自分のPCのターミナルで実行しているようにサーバーを動かすことができます。
通信が暗号化され、安全に操作できることはわかった。ただ、誰でもSSH使えばサーバーを操作できちゃったらやばくない?という時に出てくるのが、公開鍵・秘密鍵です。
公開鍵・秘密鍵
結論これらはサーバーにアクセスするための許可を持っている人かどうかをどうやって判別するかという話になってきます。SSHの主な認証方式は公開鍵認証方式といい、公開鍵・秘密鍵を使うものになります。イメージとしては公開鍵と秘密鍵がぴったり合ったら、認証されてサーバーを操作することができる!って感じです。これは公開鍵と秘密鍵が同じデータということではなく、公開鍵という名の鍵穴に秘密鍵という鍵がぴったり合うといったイメージです。
参考のイメージ図
公開鍵はサーバー側(例えばAWS上)に配置、秘密鍵は自分のPC上に配置して、ターミナルでsshのコマンドを使うことで、サーバーに接続できます。公開鍵はAWSなどのサービスに置いて、秘密鍵は自分で持っておくという置き場所から「公開」、「秘密」という名前が付けられていると考えるとイメージがつきやすいですね。
ssh -i /path/key-pair-name.pem instance-user-name@instance-public-dns-name
また、この公開鍵認証方式以外にもパスワード認証方式という、パスワードでSSHを用いてサーバーに接続するといった方法もあります。この際パスワードを単純なものにしている場合に特定される可能性が高まるなど、公開鍵認証方式の方が強固なセキュリティとなるので、できれば公開鍵認証を用いた方がいいですね。
SSHと似た名前のSSLとは?
SSL(Secure Socket Layer)というものも存在します。名前もSSHと似ていますが、機能もSSHと似ていて、一言で言えば通信を暗号化する仕組みです。SSLは用途として、インターネット上での端末とサーバ間における通信データを暗号化して送受信させるという用途であり、SSHの場合の主に遠隔でコンピューター機器を操作する際に、通信データを暗号化させるという用途とは異なります。また、先ほど説明したような認証方式も異なります。要は、通信を暗号化するのは同じだけど、用途や認証方式が違うという風に捉えていただければと思います。
最後に
なんとなくのイメージ掴んでおくことで、難しい情報も頭に入ってきやすくなるかと思うので、SSHなんじゃそりゃ?という初学者の参考になれば幸いです。
Discussion