Ubuntu12.04でSSHキーを設定する方法

提供:Dev Guides
移動先:案内検索

序章

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

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

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

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

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


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

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

ssh-keygen -t ed25519
OutputGenerating public/private ed25519 key pair.

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

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

ssh-keygen -t rsa -b 4096

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


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

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

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

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

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

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

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

OutputEnter passphrase (empty for no passphrase):

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

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

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

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

ssh-keygen -t ed25519
OutputGenerating 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ファイルにコピーできます。 例のユーザー名とアドレスを必ず置き換えてください。

ssh-copy-id sammy@your_server_address

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

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

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

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


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

sudo nano /etc/ssh/sshd_config

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

/ etc / ssh / sshd_config

PasswordAuthentication no

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

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

sudo systemctl reload sshd

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

結論

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

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