序章

セキュアシェルプロトコル(またはSSH)は、ユーザーがセキュリティで保護されていないネットワークを介してリモートコンピューターに安全にアクセスできるようにする暗号化ネットワークプロトコルです。

SSHはパスワードベースの認証をサポートしていますが、通常は代わりにSSHキーを使用することをお勧めします。 SSHキーは、一般的なブルートフォースパスワードハッキング攻撃に対して脆弱ではないため、SSHサーバーにログインするためのより安全な方法です。

SSHキーペアを生成すると、公開キーと秘密キーの2つの長い文字列が作成されます。 公開鍵を任意のサーバーに配置してから、秘密鍵にアクセスできるSSHクライアントを使用してサーバーに接続できます。

公開鍵と秘密鍵が一致すると、SSHサーバーはパスワードを必要とせずにアクセスを許可します。 オプションの(ただし強く推奨される)パスフレーズを使用して秘密鍵を保護することにより、鍵ペアのセキュリティをさらに高めることができます。

注: DigitalOceanアカウントでのSSHキーの設定に関する情報をお探しの場合は、SSHキーに関するDigitalOcean製品ドキュメントを参照してください。

ステップ1—キーペアを作成する

最初のステップは、クライアントマシンでキーペアを作成することです。 これはおそらくローカルコンピュータになります。 ローカルコマンドラインに次のコマンドを入力します。

  1. ssh-keygen -t ed25519
Output
Generating public/private ed25519 key pair.

キー生成プロセスが開始されたことの確認が表示され、次のステップで説明するいくつかの情報の入力を求められます。

注: ed25519キーペアの作成をサポートしていない古いシステムを使用している場合、または接続しているサーバーがそれらをサポートしていない場合は、強力なrsaキーペア:

  1. ssh-keygen -t rsa -b 4096

これにより、-tの「タイプ」フラグがrsaに変更され、-b 4096の「ビット」フラグが追加されて4096ビットのキーが作成されます。

ステップ2—キーを保存する場所を指定する

ssh-keygenコマンドの最初のプロンプトで、キーを保存する場所を尋ねられます。

Output
Enter file in which to save the key (/home/sammy/.ssh/id_ed25519):

ここでENTERを押すと、ファイルをホームディレクトリの.sshディレクトリのデフォルトの場所に保存できます。

または、プロンプトの後に入力してENTERを押すと、別のファイル名または場所を選択できます。

ステップ3—パスフレーズを作成する

ssh-keygenからの2番目の最後のプロンプトでは、パスフレーズを入力するように求められます。

Output
Enter passphrase (empty for no passphrase):

パスフレーズを使用するかどうかはあなた次第ですが、強くお勧めします。暗号化スキームに関係なく、キーペアのセキュリティは、他の誰もアクセスできないという事実に依存します。

パスフレーズのない秘密鍵が許可されていないユーザーの所有物になった場合、それらのユーザーは、関連付けられた公開鍵を使用して構成した任意のサーバーにログインできます。

パスフレーズを入力することの主な欠点は、ssh-agentサービスを使用することで軽減できます。このサービスは、ロック解除されたキーを一時的に保存し、SSHクライアントからアクセスできるようにします。 これらのエージェントの多くは、オペレーティングシステムのネイティブキーチェーンと統合されているため、ロック解除プロセスがさらにシームレスになります。

要約すると、キー生成プロセス全体は次のようになります。

  1. ssh-keygen -t ed25519
Output
Generating public/private ed25519 key pair. Enter file in which to save the key (/home/sammy/.ssh/id_ed25519): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/sammy/.ssh/id_ed25519 Your public key has been saved in /home/sammy/.ssh/id_ed25519.pub The key fingerprint is: SHA256:EGx5HEXz7EqKigIxHHWKpCZItSj1Dy9Dqc5cYae+1zc sammy@hostname The key's randomart image is: +--[ED25519 256]--+ | o+o o.o.++ | |=oo.+.+.o + | |*+.oB.o. o | |*. + B . . | | o. = o S . . | |.+ o o . o . | |. + . ... . | |. . o. . E | | .. o. . . | +----[SHA256]-----+

これで、公開鍵は/home/sammy/.ssh/id_ed25519.pubに配置されます。 秘密鍵は/home/sammy/.ssh/id_ed25519にあります。

ステップ4—公開鍵をサーバーにコピーする

キーペアが生成されたら、接続するサーバーに公開キーを配置します。

ssh-copy-idコマンドを使用して、公開鍵をサーバーのauthorized_keysファイルにコピーできます。 例のユーザー名とアドレスを必ず置き換えてください。

  1. ssh-copy-id sammy@your_server_address

コマンドが完了すると、パスワードの入力を求められることなく、SSH経由でサーバーにログインできるようになります。 ただし、SSHキーの作成時にパスフレーズを設定すると、その時点でパスフレーズの入力を求められます。 これは、秘密鍵の復号化を要求するローカルsshクライアントであり、パスワードを要求するリモートサーバーではありません

手順5—パスワードベースのSSH認証を無効にする(オプション)

SSHキーをサーバーにコピーしたら、パスワードベースの認証を無効にするようにSSHサーバーを構成して、パスワードログインを完全に禁止することができます。

警告:パスワードベースの認証を無効にする前に、 SSHキーを使用してサーバーに正常にログオンできること、およびパスワードを使用してログに記録する他のユーザーがサーバー上にいないことを確認してくださいの。

パスワードベースのSSH認証を無効にするには、SSH構成ファイルを開きます。 通常、次の場所にあります。

  1. sudo nano /etc/ssh/sshd_config

このコマンドは、nanoテキストエディタ内でファイルを開きます。 PasswordAuthenticationを含むファイル内の行を検索し(存在しない場合は行を作成し)、行の先頭に#がコメントアウトされていないことを確認します。 noに変更します。

/ etc / ssh / sshd_config
PasswordAuthentication no

終了したら、ファイルを保存して閉じます。 nanoで、CTRL+Oを使用して保存し、ENTERを押してファイル名を確認してから、CTRL+Xを押して終了します。

sshdサービスをリロードして、次の変更を有効にします。

  1. sudo systemctl reload sshd

現在のSSHセッションを終了する前に、別の端末でテスト接続を行って、接続できることを確認してください。

結論

このチュートリアルでは、SSHキーペアを作成し、公開キーをサーバーにコピーし、(オプションで)パスワードベースの認証を完全に無効にしました。

多要素認証の設定方法など、SSHとSSHサービスの詳細については、関連するチュートリアルをお読みください。