
前回のtelnetに引き続き、今回はSSHについて解説していきます。
- SSHとは
- SSHの用途
- SSHの認証の仕組み
SSHとは
SSHとは、Secure Shell の略称です。
telnetと同様に遠隔地にあるデバイスを操作するために使用されるプロトコルです。
telnetとの大きな違いは、認証部分を含めて通信の内容が全て暗号化されるため、安全に通信を行うことができるという点です。
telnetでは、通信内容が平文で送られるため、通信を傍受されれば接続先の認証情報ややりとりしているデータの内容を盗まれる可能性がありました。
SSHでは、その心配はなく、例え通信を傍受されたとしても、暗号化されているため内容がわからないようになっています。
また、SSHでは、22番ポートを使用しています。
SSHの用途
SSHは、様々な場面で用いられています。
例えば、遠隔地にあるネットワーク機器にログインする時にも使用されています。
前回ご紹介したtelnetと同じように、SSHではネットワーク機器にログインして、ネットワーク機器の設定を変更したり状態を確認したりすることができます。
また、telnetよりもセキュアに使用できるため、ネットワークインフラを管理する上では非常に重要なプロトコルの一つと言えます。
最近では、クラウド上に構築したLinuxのVMにアクセスするためにも使用されています。
クラウド上のVMにSSHでアクセスし、初期のセットアップや必要なソフトのインストールを実行します。
VMで障害が発生した時には、内部のログを確認し、障害の原因を突き止める場合などにも使用されます。
SSHの認証の仕組み
SSHでは、ログインするときの認証として、2つの仕組みがあります。
パスワード認証
パスワード認証は、その名の通りパスワードを使って認証する仕組みです。
SSHサーバーを構築した際に、一対のユーザーとパスワードを用意し、そのユーザーとパスワードを使って認証しています。
クライアントが、ユーザーとパスワードを無事入力できれば、そのクライアントは正規のユーザーとして認められ、デバイスを操作できるようになります。
パスワード認証では、パスワードが流出した場合に、どこからでもSSH接続ができてしまうという欠点があります。
SSH接続をしようとするクライアントで同一のパスワードを共有することになるため、使用するクライアントが増えれば増えるほど、パスワード流出のリスクは高くなります。
公開鍵認証
公開鍵認証では、クライアントの認証に公開鍵と秘密鍵を使用します。
公開鍵で暗号化された内容は、対応する秘密鍵でのみ複合化することができます。
その特性を使って、以下のようにクライアントが正規のユーザーであると認証しています。
まず、クライアントは自身で対になる暗号鍵と秘密鍵を作成し、公開鍵をサーバーへ渡ます。
公開鍵を受け取ったサーバーは、その公開鍵で暗号文を作成し、クライアントに送付します。
暗号文を受け取ったクライアントは、秘密鍵を使って暗号文を複合し、その結果をサーバーへ送ります。
複合された結果を見たサーバーは、自信が送った暗号の元の文と比較し、複合結果が正しければクライアントを正規のユーザーとして認証します。
この方式では、パスワードの流出などは発生しないため、パスワード認証の方式よりも、よりセキュアな接続を実現することができます。
まとめ
いかがだったでしょうか。
SSHは、ブログを作成する際にレンタルするサーバーへアクセスする際などにも使用するプロトコルです。
また、最近ではスマートフォンでも使用することができますので、スマートフォンを使ってサーバーなどのデバイスを操作することもできるようになっています。
インフラのエンジニアを目指している方には、必須の知識ですので、ぜひこの際に覚えておきましょう。