2022/09/23

テクノロジー

sshをある程度理解する

この記事の目次

    sshとは

    secure shellの略称で、サーバを遠隔操作するためのプロトコルの名称です。
    そもそもプロトコルとは、データをやり取りするために定められた手順や規約、信号の電気的規則、通信における送受信の手順などを定めた規格のことを言います。

    sshの最も一般的な使い方は、自分のPCからサーバへのリモートログインやファイルの転送です。専用のサーバルームや遠隔地のデータセンター内に設置されているサーバの操作は、ネットワーク越しにリモートログインして行うのが一般的です。
    また、クラウド上のサーバーは物理的に触れることができないため、ネットワーク越しに操作するしかありませんので、その際にsshを利用してサーバにログインします。

    sshが使われる前は、telnetが主流でした。しかしtelnetは暗号化せずにデータを送受信するため、第三者からデータが丸見えです。
    sshでは認証部分を含めて、全ての通信が暗号化されているので、第三者からデータが見られず、さらに高速なので、現在はsshが主流になっています。

    簡単にまとめると、「こういうルールのもとで通信を行うことをsshと呼びましょう」ということです。そのルールに従っていると以下のようなメリットがあります。

    sshを利用するメリット

    1. 安全な通信が可能

    暗号化された通信により、大切な情報を第三者に見られることなく、安全に情報を取り扱えるようになります。
    また、認証方法には公開鍵暗号方式が使われるため、なりすましによるアクセスを防ぐことが可能です。
    そのため、IDやパスワード、個人情報、企業の機密情報の流出リスクなどを防げます。

    公開鍵暗号とは

    「公開鍵認証」とは、「公開鍵」と「秘密鍵」という2種類の鍵のペア(キーペア)を用いて認証を行う方式です。

    1. サーバにログインするユーザは、事前に自分用のキーペアを作成します
    2. そのうち公開鍵をサーバーに登録し、秘密鍵は自分のPC内に保管しておきます
    3. サーバにログインする際には、まず秘密鍵を用いて署名を作成し、サーバへ送信します
    4. サーバは受け取った署名をペアとなる公開鍵で検証し、登録済みの公開鍵での検証が成功した場合に限り、ログインを許可するという仕組みです

    これらはSSHクライアントとサーバの間で自動的に行われるため、ユーザーが意識する必要はありません。

    また、秘密鍵に「パスフレーズ」を設定して鍵そのものをロックすることもできます。パスフレーズとはパスワードの一種で、一般的なパスワードはあくまで単一の「単語」ですが、パスフレーズは複雑な「文章」の形を取れるため、より「強い」パスワードを作ることができます。
    ロックされた秘密鍵は、正しいパスフレーズを入力しない限り使用できないため、公開鍵認証をよりセキュアに運用できます。

    2. サーバ上でファイルの編集が可能

    sshが普及する前に使われていたtelnetの場合は、編集したいファイルを一度ローカルディスクにダウンロードします。ダウンロードしたファイルの編集が完了したら、再度元のフォルダにアップロードをする必要がありました。

    sshを利用すれば、今まで行っていたファイルをダウンロードしたりアップロードすることなく、サーバ上で直接ファイルを編集できるようになります。

    sshを利用する

    ご自身のPCでsshをするために、公開鍵と秘密鍵のキーペアを生成する必要があります。
    以下のコマンドでキーペアを生成することができます。

    ssh-keygen -t ed25519 -C "your_email@example.com"

    -tで暗号化方式を変えられ、デフォルトの設定だとrsaになっているので、ed25519にします(参考
    上記を行うと、以下のような画面になります。

    デフォルトではホームディレクトリの.sshディレクトリ配下にid_ed25519id_ed25519.pubが生成されます。
    別のディレクトリに生成したかったり、ファイル名を変えたい場合はここで指定することができます
    特に変更させずデフォルトのまま進みたいのであれば、何も入力せずにEnterを押します。

    その後、パスフレーズの入力を促されるので、パスフレーズを入力します
    パスフレーズを設定しない場合は、何も入力しないままEnterを押します。

    上記のような謎の文字列が表されていれば成功です

    実際にファイルが生成されているかを見てみると、.sshもしくは指定したディレクトリの配下に秘密鍵と公開鍵(.pub付きのファイル)が表示されているかと思います。

    今後、サーバにssh経由でログインする場合は、上記のように鍵を生成し、公開鍵にあたる〇〇.pubの中身をコピーしてサーバに登録することで、サーバへsshすることができます。

    参照

    ※本記事は2022年09月時点の情報です。

    著者:マイナビエンジニアブログ編集部