パブリックおよびプライベートSSHキーの利点

ヘッドレスまたはリモートのVPSがインターネット上で表示される場合は、可能であれば、パスワードの代わりに公開鍵認証を使用する必要があります。 これは、SSHキーが、パスワードのみを使用する場合と比較して、より安全なログイン方法を提供するためです。 最終的にはブルートフォース攻撃でパスワードが解読される可能性がありますが、SSHキーをブルートフォースだけで解読することはほぼ不可能です。 公開鍵認証を使用すると、すべてのコンピューターに(i)公開鍵と(ii)秘密の「鍵」(数学的にリンクされた2つのアルゴリズムがあり、事実上解読することは不可能です)があります。

現在、 OpenSSH は、LinuxやOSXなどのUnixライクなシステムでのデフォルトのSSH実装です。 キーベースの認証は、プレーンパスワードやKerberosチケットなど、OpenSSHで使用できるいくつかの認証モードの中で最も安全です。 他の認証方法は、非常に特定の状況でのみ使用されます。 SSHは、「RSA」(Rivest-Shamir-Adleman)または「DSA」(「デジタル署名アルゴリズム」)キーのいずれかを使用できます。 SSHが発明されたとき、これらは両方とも最先端のアルゴリズムと見なされていましたが、DSAは近年安全性が低いと見なされるようになりました。 新しいキーの推奨される選択肢はRSAのみであるため、このチュートリアルでは「RSAキー」と「SSHキー」を同じ意味で使用します。

DigitalOcean VPSにログインすると、SSHサーバーは公開鍵を使用して、秘密鍵でのみ「ロック解除」できる方法でメッセージを「ロック」します。 これは、最も機知に富んだ攻撃者でさえ、セッションをスヌープしたり、妨害したりできないことを意味します。 追加のセキュリティ対策として、一部のユーザーとほとんどのSSHプログラムは、秘密鍵をパスフレーズで保護された形式で保存し、コンピューターが盗まれたり侵入されたりした場合に、侵害された公開鍵を無効にできる時間枠を提供します。 これらの理由から、ほとんどの人にとって、公開鍵認証はパスワードよりもはるかに優れたソリューションです。 実際、秘密鍵にパスフレーズを使用しないことで、増分オフサイトバックアップなどの安全な自動ログインで構成管理の一部を自動化し、DigitalOceanAPIを介してDigitalOceanアセットを管理することができます。もっと。

キーベースのSSHログイン

同じ公開鍵を必要な数のクラウドサーバーに保存できますが、秘密鍵はサーバーにログインするクライアントに保存されます。 次に、通常のユーザー名/パスワードのログイン手順を無効にできます。つまり、有効な秘密鍵と公開鍵のペアを持つユーザーのみがログインできます。 ブルートフォース攻撃の影響を受けないため、システムの安全性が高まります。

新しい液滴の作成を自動化する

SSHキーが役立つもう1つの便利な目的は、DigitalOceanドロップレットの作成です。 ご存知のように、ドロップレットをスピンアップするときは、パスワードが記載された電子メールを待つ必要があります。 この電子メールは非常に便利ですが、電子メールを必要とせずに新しいクラウドサーバーにアクセスするためのより安全な(そしてより高速な)方法があります。 これは、DigitalOceanコントロールパネルに公開鍵を保存することで実行できます。 これを達成するには:

  • まず、このチュートリアルのPuTTYで使用するOpenSSH互換キーの生成というタイトルのセクションを完了します。
  • 次に、 DigitalOceanDropletsでSSHキーを使用する方法のステップ3にスキップします。

前提条件

このチュートリアルは、 PuTTYを使用してドロップレットにログインする方法(Windowsユーザー向け)に関するDigitalOcean’のガイドに精通していることを前提としています。

PuTTYキージェネレーター(別名 PuTTYgen)

PuTTYは(TelnetとRloginに加えて)SSHのクライアントプログラムですが、OpenSSHの移植版ではなく、OpenSSHに基づくものでもありません。 したがって、PuTTYは、OpenSSHのSSH-2秘密鍵ファイルを読み取るためのネイティブサポートを備えていません。 ただし、PuTTYには、OpenSSH秘密鍵ファイルをPuTTYの形式に変換できるPuTTYgen(RSAおよびDSA鍵生成ユーティリティ)という名前のコンパニオンがあります。 SSHキーが提供する追加のセキュリティを使用して、Windowsマシンからクラウドサーバーに接続できるようにします。

PuTTYgenは(無料の)オープンソースユーティリティであり、maintainer’のWebサイトからダウンロードできます。 PuTTYgenは、PuTTYで使用するSSHキーを生成するために使用するものです。 まず、実行可能なファイル(.exe)をダウンロードして、VPSへの接続に使用するコンピューターに保存するだけです。 デスクトップ上。 PuTTYgenはスタンドアロンアプリケーションであるため、必要はありません

PuTTYで使用するOpenSSH互換キーの生成

PuTTYgenを使用してRSAキーのセットを生成するには:

  1. .exeファイルをダブルクリックして、PuTTYgenユーティリティを起動します。
  2. 生成するキーのタイプで、RSAを選択します。
  3. 生成されたキーのビット数フィールドで、2048または4096のいずれかを指定します(ビットを増やすと、ブルートフォース方式でキーを解読しにくくなります);
  4. 生成ボタンをクリックします。
  5. プログレスバーがいっぱいになるまで、プログレスバーの下の Key セクションの空白の領域でマウスポインタを動かします(ランダム性を生成するため)。
  6. これで、秘密鍵と公開鍵のペアが生成されました。
  7. キーコメントフィールドに、任意のコメント’を入力して、後でこのキーペアを識別できるようにします(例: あなたのメールアドレス; 家; オフィス; など)-キーコメントは、複数のキーペアを作成することになった場合に特に役立ちます。
  8. オプション :パスフレーズをキーパスフレーズフィールドに同じパスフレーズを再入力しますパスフレーズを確認するフィールド(ただし、自動化されたプロセスにキーを使用する場合は、 いいえパスフレーズを作成する);
  9. クリック公開鍵を保存するボタンを押して、好きなファイル名を選択します(一部のユーザーは自分のコンピューターに名前の付いたフォルダーを作成します my_keys );
  10. クリック秘密鍵を保存するボタンを押して、任意のファイル名を選択します(公開鍵と同じ場所に保存できますが、アクセスできる場所であり、紛失しないようにする必要があります。 キーを紛失し、ユーザー名/パスワードのログインを無効にすると、ログインできなくなります!);
  11. OpenSSHauthorized_keysファイルに貼り付けるための公開鍵というラベルの付いたテキストフィールドを右クリックし、すべて選択を選択します。
  12. 同じテキストフィールドをもう一度右クリックして、コピーを選択します。

注: PuTTYとOpenSSHは、公開SSHキーに異なる形式を使用します。 コピーしたSSHKeyが”—-BEGIN SSH2 PUBLIC KEY …”で始まる場合は、形式が間違っています。 必ず指示に注意深く従ってください。 キーは「ssh-rsaAAAA….」で始まる必要があります。

サーバーに公開鍵を保存する

次に、コピーした公開鍵をサーバー上のファイル〜/ .ssh /authorized_keysに貼り付ける必要があります。

  1. 宛先サーバーにログインします。 参照PuTTYを使用してドロップレットにログインする方法(Windowsユーザー向け)
  2. SSHフォルダーがまだ存在しない場合は、手動で作成します。
  3. mkdir ~/.ssh
    chmod 0700 ~/.ssh
    touch ~/.ssh/authorized_keys
    chmod 0644 ~/.ssh/authorized_keys
  4. SSH公開鍵を〜/ .ssh / authorized_keys ファイルに貼り付けます(参照 クラウドサーバーでのVimテキストエディターのインストールと使用):
  5. sudo vim ~/.ssh/authorized_keys
  6. をタップしますiキーボードのキーを押し、マウスを右クリックして貼り付けます。
  7. 保存するには、キーボードの次のキーを(この順序で)タップします:Esc:wqEnter

サーバーの設定を保存するためのPuTTYプロファイルを作成する

PuTTYでは、さまざまなSSHサーバーへの接続用のプロファイルを作成(および保存)できるため、冗長な情報を覚えたり、継続的に再入力したりする必要はありません。

  1. 実行可能ファイルをダブルクリックしてPuTTYを起動します。
  2. PuTTY’の初期ウィンドウはSessionカテゴリーです(ウィンドウの左側に沿って、PuTTY ‘のさまざまなカテゴリーをナビゲートします)。
  3. ホスト名フィールドに、VPSのIPアドレスまたは完全修飾ドメイン名(FQDN)を入力します。 を参照DigitalOceanでホスト名を設定する方法
  4. ポートフィールドにポート番号を入力します(セキュリティを強化するために、サーバー’のSSHポートを非標準ポートに変更することを検討してください。 」を参照Ubuntu12.04を使用したサーバーの初期設定
  5. プロトコルSSHを選択します。
  6. ウィンドウの左側に沿って、接続の下のデータサブカテゴリを選択します。
  7. SSHサーバーにログインするときに使用する予定のユーザー名と、’保存するプロファイルを自動ログインユーザー名フィールドに指定します。
  8. 接続の下のSSHサブカテゴリを展開します。
  9. Auth サブカテゴリを強調表示し、PuTTYウィンドウの右側にあるブラウズボタンをクリックします。
  10. ファイルシステムを参照し、以前に作成した秘密鍵を選択します。
  11. Session カテゴリに戻り、 Saved Sessionsフィールドにこのプロファイルの名前を入力します。例: [email protected]または[email protected];
  12. 保存されたセッションのロード、保存、または削除領域の保存ボタンをクリックします。

これで、先に進んで user @ 1.2.3.4にログインでき、ではなくパスワードの入力を求められます。 ただし、公開鍵にパスフレーズを設定している場合は、その時点で(および今後ログインするたびに)パスフレーズの入力を求められます

ユーザー名/パスワードのログインを無効にする

キーベースのログインが機能していることを確認したら、セキュリティを強化するためにユーザー名/パスワードのログインを無効にすることを選択できます。 これを行うには、SSHサーバーの構成ファイルを編集する必要があります。 Debian / Ubuntuシステムでは、このファイルは / etc / ssh /sshd_configにあります。

sudo vim /etc/ssh/sshd_config

キーボードのiキーをタップして、以下で参照されている行を編集します。

[...]
PasswordAuthentication no
[...]
UsePAM no
[...]

保存するには、キーボードの次のキーを(この順序で)タップします:Esc:wqEnter 。 次に、SSHサーバーの構成をリロードします。

sudo reload ssh

追加リソース

いつものように、このハウツーの手順についてサポートが必要な場合は、以下の質問を提起して、DigitalOceanコミュニティに支援を求めてください。

投稿者: Pablo Carranza