\r\n\r\n
ネットワークセキュリティに配慮し、リモートログインにはSSHキーを使用します。パスワードよりも安全です。LinuxでSSH鍵を生成し、インストールし、使用する方法を紹介します。
secureshell(SSH)は、遠隔地のLinuxやUnix系コンピュータのユーザーアカウントにログインするために使用する暗号化プロトコルです。一般的に、このようなユーザーアカウントはパスワードで保護されています。リモートコンピューターにログオンする場合、ログオンするアカウントのユーザー名とパスワードを入力する必要があります。
パスワードは、コンピューティングリソースへのアクセスを保護するための最も一般的な方法です。とはいえ、パスワードによるセキュリティには欠点もある。弱いパスワードを選択する、パスワードを共有する、複数のシステムで同じパスワードを使用する、などです。
SSHキーはより安全で、一度設定すればパスワードと同様に簡単に使用することができます。
SSHキーはペアで作成・使用されます。2つの鍵はリンクしており、暗号的に安全です。ひとつは公開鍵、もうひとつは秘密鍵です。ユーザーアカウントに紐付いています。1台のコンピュータで複数のユーザーがSSH鍵を使用している場合、各ユーザーは独自のキーペアを受け取ります。
秘密鍵はメインフォルダー(通常)に、公開鍵はアクセスが必要なリモートコンピュータにインストールされます。
秘密鍵は安全に保管する必要があります。他の人がアクセスした場合、その人があなたのパスワードを見つけたのと同じ場所にいることになります。秘密鍵を強固なパスワードで暗号化し、コンピュータに保存しておくことは、賢明かつ非常に推奨される予防策です。
公開鍵は、セキュリティを損なうことなく、自由に共有することができます。公開鍵を調べても、秘密鍵が何であるかを判断することはできない。秘密鍵は、秘密鍵によってのみ復号化可能なメッセージを暗号化することができます。
接続要求を行うと、リモートコンピュータはその公開鍵のコピーを使用して、暗号化されたメッセージを作成します。メッセージには、セッションIDなどのメタデータが含まれます。このメッセージは、あなたのコンピュータの秘密鍵を持つコンピュータだけが解読することができます。
あなたのコンピューターがあなたの秘密鍵にアクセスし、メッセージを復号化する。そして、自分自身の暗号化されたメッセージをリモートコンピューターに送り返します。さらに、この暗号化されたメッセージには、リモートコンピューターから受信したセッションIDが含まれています。
リモートコンピューターは、あなたの秘密鍵だけがあなたのコンピューターに送信されたメッセージからセッションIDを抽出できるため、あなたが自分で言う人物でなければならないことを知ることができるようになりました。
リモートで接続し、リモートコンピューターにログオンできることを確認する。これは、ユーザー名とパスワードがリモートコンピュータの有効なアカウントとして設定されていること、および認証情報が正しいことを証明するものです。
SSHキーは、SSHとパスワードを使ってターゲットコンピュータに接続できることを確認するまでは、使用しないでください。
この例では、daveというユーザーアカウントを持つ人がhowtogeekというコンピューターにログオンしています。Sulacoという別のコンピュータに接続するのです。
彼らは次のようなコマンドを入力する。
ssh dave@sulacoパスワードの入力を求められ、それを入力し、Sulacoと接続する。彼らのコマンドラインプロンプトは、これを確認するために変更される。
daveというユーザがexitコマンドを使ってSulacoから切断できることを確認する必要があるだけです。
exit切断メッセージを受け取り、コマンドラインプロンプトはDave @howtogeekに戻ります。
関連:Windows、macOS、LinuxからSSHサーバーに接続する方法
これらのコマンドは、LinuxのUbuntu、Fedora、Manjaroディストリビューションでテストされました。いずれの場合もプロセスは同じで、どのテストマシンにも**ソフトウェアをインストールする必要はありませんでした。
SSH鍵を生成するには、次のコマンドを入力します。
ssh-keygen世代交代が始まる。SSH鍵をどこに保存するか聞かれます。Enterキーを押して、デフォルトの場所を受け入れます。このフォルダーへのアクセス権は、あなただけが使えるように保護されます。
パスワードのフレーズを入力するように要求されます。ここで、パスワードのフレーズを入力することを強くお勧めします。それが何なのか、覚えておいてくださいパスワードフレーズを入力せずにEnterキーを押すこともできますが、これは良いアイデアではありません。3~4個のつながりのない単語をつなぎ合わせたパスワードは、非常に堅牢なパスワードになります。
入力した内容が正しいかどうかを確認するために、同じパスワードのフレーズを再度入力するよう求められます。
SSH鍵の生成と保管を代行します。
表示される "ランダムアート "は無視していただいて結構です。リモートコンピュータの中には、接続するたびにランダムアートを表示するものがあります。この目的は、ランダムアートが変更された場合、そのサーバーのSSHキーが変更されたことを意味するので、接続を疑って認識することができるようになることです。
リモートコンピュータSulacoにあなたの公開鍵をインストールし、その公開鍵があなたのものであることを認識させる必要があるのです。
この操作を行うには、ssh copy id コマンドを使用します。このコマンドは、通常のsshコマンドと同様にリモートコンピュータに接続しますが、ログインできるようにする代わりに、公開sshキーを転送します。
ssh-copy-id dave@sulacoリモートコンピューターにログインしていなくても、パスワードを使った認証が必要です。リモートコンピュータは、新しいSSH鍵がどのユーザーアカウントに属するかを特定する必要があります。
ここで入力するパスワードは、ログインしているユーザーアカウントのパスワードであり、先ほど作成したパスワードフレーズではないことにご注意ください。
パスワードを確認した後、ssh copy id は公開鍵をリモートコンピュータに転送します。
コンピュータのコマンドプロンプトに戻りますが、リモートコンピュータに接続していない状態です。
提案されたとおりにリモートコンピュータに接続してみましょう。
ssh dave@sulaco接続プロセスには秘密鍵へのアクセスが必要で、SSH鍵をパスワードフレーズで保護しているため、接続を継続できるようにパスワードフレーズを提供する必要があります。
パスワードのフレーズを入力し、ロック解除ボタンをクリックします。
ターミナルセッションで一度入力したパスワードフレーズは、ターミナルウィンドウを開くとすぐに再入力する必要はありません。パスワードフレーズを再度入力することなく、いくつものリモートセッションに自由に接続・切断することができます。
ログイン時にこのキーを自動的に解除する」オプションのチェックボックスをオンにすることもできますが、その場合、セキュリティが低下します。コンピュータを放置しておくと、誰でもあなたの公開鍵を使って遠隔地のコンピュータに接続することができます。
パスワードを入力すると、リモートコンピュータに接続できるようになります。
エンドツーエンドのプロセスを再度確認するには、exitコマンドを使用して切断した後、同じターミナルウィンドウからリモートコンピュータに再接続してください。
ssh dave@sulacoパスワードやパスフレーズなしで、リモートコンピューターに接続します。
サイバーセキュリティの専門家は、セキュリティ摩擦と呼ばれるものについて話しています。ちょっとした痛みを我慢することで、ワンランク上の安心感を得ることができるのです。通常、より安全なアプローチを取るには、数ステップか2ステップ余分に必要です。ほとんどの人が嫌がる。実は、彼らはセキュリティが低く、摩擦がないことを好むのです。それが人間の本質です。
SSHキーを使えば、より高いセキュリティと利便性を手に入れることができるのです。