Ubuntu12.04でSSHキーを設定する方法
序章
セキュアシェルプロトコル(または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サービスの詳細については、関連するチュートリアルをお読みください。