はじめに
公開鍵認証 SSHを使用した安全なロギング方法です。この手順では、パスワードの代わりに、検証に暗号化キーのペアを使用します。強力なパスワードを使用するとブルートフォース攻撃を防ぐことができますが、公開鍵認証は暗号化の強度と自動化されたパスワードなしのログインを提供します。
このガイドでは、公開鍵認証を最初から実装する方法について段階的に説明します。
前提条件
- 管理者権限を持つコマンドライン/ターミナルアクセス。
- SSHが有効になっています。 LinuxでSSHをオンにするには、ガイドに従ってください:Ubuntu 18.04、Debian9または10。
- ローカルサーバーとリモートサーバー。
認証にSSHキーを使用する
SSH公開鍵認証には4つのステップがあります:
1.キーペアと呼ばれる秘密キーと公開キーを生成します 。秘密鍵はローカルマシンに残ります。
2.対応する公開鍵をサーバーに追加します。
3.サーバーは公開鍵を保存し、承認済みとしてマークします。
4.サーバーは、対応する秘密鍵の所有権を証明するすべての人にアクセスを許可します。
このモデルは、秘密鍵が保護されていることを前提としています。秘密鍵を暗号化するためにパスフレーズを追加すると、ほとんどのユーザーベースのケースに十分なセキュリティの層が追加されます。自動化の目的で、秘密鍵は保護されないままであるため、鍵管理ソフトウェアとプラクティスが適用されます。
SSHキーペアの生成
OpenSSHを使用して、ローカルサーバーでSSHキーペアを生成します。 Linux、macOS、およびWindowsの基本的な手順の概要を以下に示します。
LinuxとmacOS
1.ターミナルを開きます( CTRL + ALT + T 。
2.次のコマンドで既存のキーを確認します:
ls -l ~/.ssh/id*
すでにキーがある場合、出力にはディレクトリの内容が表示されます:
新しいキーを生成すると、デフォルトで現在のキーが上書きされます。ただし、キーに新しい名前を付けると、キーは別のファイルに保存されます。
既存のキーがない場合、出力はフォルダが存在しないことを示します:
3. mkdirコマンドを使用してディレクトリを作成し、新しいキーペアを保存します。
mkdir ~/.ssh
4.権限を700に変更します:
chmod 700 ~/.ssh
5.次のコマンドは、キージェネレータを起動します。
ssh-keygen
出力は、コマンドが正常に実行されたことを示すメッセージを出力します。次に、プログラムはファイルを保存する場所を尋ねます:
キーストレージのデフォルトのディレクトリとファイルは/ home /
6.最後に、パスフレーズを入力してキーを保護します。 Enterを押します 要求されたら、パスフレーズをもう一度確認します。認証にキーを使用するときは常にパスワードが必要です。
7.最後に、プログラムはキーが保存されている場所に関する情報を出力します。さらに、デジタルおよびグラフィック表現もコンソールに印刷されます。
8.内容を確認して、キーがディレクトリにあることを確認します。
ls -l ~/.ssh/
これで、ディレクトリには2つのファイルが含まれます。
- id_rsa 秘密鍵です。
- id_rsa.pub は公開鍵です。
ウィンドウ
1. Windowsの検索ボックスを使用して、 cmdを検索します。 コマンドプロンプトウィンドウを開きます。
2.プロンプトで、次のように入力します。
ssh-keygen
このコマンドは、キーペアを生成するためのプログラムを開始します。
3.キーの特定の場所を設定する場合は、ここでパスを入力します。それ以外の場合は、 Enterを押します キーをデフォルトのパスに保存します。
この場所にキーが存在する場合、出力は上書きの確認を求めます。 Yと入力します 確認してEnterを押します セットアップを続行します。
4.パスフレーズを入力して秘密鍵を暗号化します。同じパスフレーズを再入力して、 Enterを押します キーペアの生成を終了します。
キーに1つまたは複数のSSH/SFTPユーザーを設定する
キーペアを生成したら、次のステップは、キーのSSHおよびSFTPユーザー用にサーバーマシンを構成することです。
1.サーバーマシンで、 〜/ .sshかどうかを確認します フォルダが存在します:
ls -l ~/.ssh/
ディレクトリが存在しない場合は、次のフォルダを作成します。
mkdir ~/.ssh
次に、次のコマンドで権限を変更します:
chmod 700 ~/.ssh
2. authorized_keysというファイルを作成します 〜/ .ssh ディレクトリ:
touch authorized_keys
権限を変更します:
chmod 600 ~/.ssh/authorized_keys
3.次に、 authorized_keysを開きます テキストエディタを使用してファイル。公開鍵の内容をauthorized_keysにコピーします ファイル。複数のユーザーとキーの場合は、新しい各キーを新しい行にコピーします。ファイルを保存して閉じます。
Linuxでは、次のコマンドを使用してキーを自動的にコピーします。
ssh-copy-id <username>@<host>
出力には、サーバーに自動的にコピーされたキーの数と詳細な手順が表示されます。
SSH経由でファイルを転送する場合、複数のソリューションが存在します:
- Linux、macOS、またはWindowsでSSHFSを使用する
- Linuxの代わりにRSyncを使用します。
ログイン
キーを生成してコピーした後、次のコマンドを使用してローカルマシンからサーバーにログインします。
ssh <username>@<host>
このコマンドは、秘密鍵のパスワードを入力するためのプロンプトを表示します:
最後に、パスワードを入力してキーのロックを解除します:
確認されると、コマンドはSSH経由でサーバーにログインします。
SSHで公開鍵認証を使用する必要があるのはなぜですか?
公開鍵認証は、通常のパスワードログインの代わりにSSHに接続するためのより安全で推奨される方法です。
いくつかの利点は次のとおりです。
- SSHキーペアはハッキングが困難です。ほとんどのSSHキーは少なくとも1024ビット長であり、これは12文字のパスワードに相当するため、接続は安全です。セキュリティをさらに向上させるには、キーを生成するときにビット数を増やします。
- キーの内容はコンピューターアルゴリズムを使用して生成されるため、予測が難しくなります。
- 秘密鍵が存在するマシンのみがアクセスできます。
- 公開鍵認証では、秘密鍵の内容がサーバーに表示されることはありません。サーバーが危険にさらされた場合でも、ローカルマシンは安全に保たれます。
- 秘密鍵にパスワードを追加すると、多要素認証が追加されます。