OpenSSHとは
SSH(Secure Shell)とは。リモートホスト間の通信で高いセキュリティ強度を実現する仕組みです。強力な認証機能と暗号化でファイル転送・リモート操作を安全に行えます。
telnetの場合、通信内容がプレーンテキスト(平文)なので、通信経路を盗聴されるとアカウント・パスワードを容易に判明できます、しかしSSHだとデータを暗号化するので安全性が向上します。
LinuxはOpenSSHが一般的に利用されています。SSHのバージョンは現在1系・2系があり、公開鍵暗号方式の認証アルゴリズムが違います。1系はRSA1、2系はDSA・RSAが使われます。
それぞれのプロトコルに互換性はありませんが、OpenSSHは両方のプロトコルに対応しています。
SSHのインストールと設定
多くのディストリビューションでパッケージが用意されています。
Ubuntu・Debian GNU/Linuxはopenssh-clientとopenssh-serverパッケージ、Red Hat系ディストリビューションは、openssh、openssh-server、openssh-clientなどインストールします。
OpenSSHをインストールすると、ホストの公開鍵と秘密鍵が作成され、ホスト認証に使われます。
ホスト認証とは
ホスト認証とは。SSHでは、ユーザー名・パスワードでのユーザー認証に先だって、クライアントでサーバの正当性を確認するホスト認証が実行されます。
SSHで接続するとサーバ固有のホスト認証(公開鍵)がサーバからクライアントに送られ、クライアント側で保存されているサーバの公開鍵と一致するか比較確認します。
初回接続時は接続先サーバの公開鍵を持っていないので比較できません。なので「接続先ホストが登録されていない」旨のメッセージが表示されます。
メッセージが表示されたら「yes」と入力します、サーバの公開鍵が「~/.ssh/known_hosts」ファイルに登録され、次回接続時からメッセージは非表示になります。
万が一悪意あるユーザになりすまされても、偽のサーバのホスト認証鍵(ホスト鍵)が本物のサーバのホスト鍵と異なれば警告が表示されます。
公開鍵認証とは
ユーザー認証には、パスワード認証以外に公開鍵認証が使えます。
公開鍵認証では、通信を行うホスト間で一対の公開鍵と秘密鍵のペアを使い認証を行います。公開鍵認証には、クライアント側のユーザーの公開鍵を前もってサーバに登録しておく必要があります。
公開鍵と秘密鍵の鍵ペアを作成するには、「sshkeygenコマンド」を使います。下記コマンドの例です。
書式例
ssh-keygen [オプション]
ssh-keygenコマンドのオプション
一部オプションを抜粋。
オプション | 説明 |
-tタイプ | 暗号化タイプを指定する。タイプは以下のいづれか。 rsa1:RSA(SSHバージョン1) rsa:RSA(SSHバージョン2) dsa:DSA(SSHバージョン2) ecdsa:ECDSA鍵(SSHバージョン2) ed25519:ED25519鍵(SSHバージョン2) |
-p | パスフレーズを変更する |
-f ファイル名 | 鍵ファイルを指定する |
-R ホスト名 | 指定されたホストの鍵をnown_hstsファイルから削除する |
-b ビット長 | 鍵の長さをビット長で指定する(2048など) |