SSH キーは、2つのサーバーまたはシステム間のトラフィックまたは通信を認証および保護するために使用される暗号化キーです。ブルートフォース攻撃を受けやすい従来のパスワード認証とは対照的に、より安全な認証方法を提供します。
このチュートリアルでは、 Rocky LinuxでSSHキーを設定する方法について説明します。 。
RockyLinuxでRSASSHキーペアを作成する
RSAの作成を開始するには ローカルシステムのキーペアは、次のコマンドを実行します。
$ ssh-keygen OR $ ssh-keygen -t rsa
デフォルトでは、これにより2048ビットRSAが作成されます クライアントとリモートホスト間のトラフィックを暗号化するのに十分安全であると見なされるキーペア。
オプションで、4096ビットを作成できます -b
を渡すことで、より大きく、より安全なキーペア 次のオプション:
$ ssh-keygen -b 4096
ssh-keygenを実行した後 コマンドを実行すると、一連のプロンプトが表示されます。最初に、キーが保存されるファイルを提供する必要があります。デフォルトでは、キーは~/.ssh
に保存されます ホームディレクトリのディレクトリ。カスタムファイルを定義できますが、この図では、デフォルトを使用します
したがって、 ENTERを押します キーを~/.ssh
に保存します ホームディレクトリのディレクトリ。
SSHキーがすでに存在する場合は、次のプロンプトが表示され、上書きするように求められます。ここで注意してください。キーを上書きすると、以前のキーを使用して認証ができなくなります。 「はい」を選択する 現在のキーを破棄し、新しいキーを生成します。
次に、パスフレーズの入力を求められます。これはオプションの手順であり、許可されていないユーザーが認証にキーを使用することを防ぐための追加の保護レイヤーを提供します。ただし、ローカルシステムと他のリモートホスト間でパスワードなしのSSH認証を構成する場合は、これを空白のままにすることができます。
今のところ、これを空白のままにして、 ENTERを押します。 。
最後に、SSHキーペア( public およびプライベート キー)は、指定されたパスでローカルシステムに保存されます。これは、コマンドが正常に実行された後に生成される出力です。
デフォルトのオプションでは、 SSH キーは~/.ssh
に保存されます ホームディレクトリ内のディレクトリ。これを確認するには、次のコマンドを実行します:
$ ls -la ~/.ssh
- id_rsa は秘密鍵であり、秘密にしておく必要があります。それを漏らすと、リモートサーバーの重大な侵害につながる可能性があります。
- id_rsa.pub は公開鍵であり、接続するリモートホストに保存されます。
SSHを使用 キーが正常に作成されたら、次のステップはパブリックを保存することです 認証の準備ができているリモートシステムの鍵。
SSH公開鍵をリモートLinuxサーバーにコピー
ssh-copy-id コマンドは、SSH公開キーをリモートホストにコピーする簡単で便利な方法を提供します。次の構文が必要です:
$ ssh-copy-id user@remote-host-ip-address
bobという通常のユーザーがいるリモートシステムがあります すでに構成されています。公開SSHキーをコピーするには、次のコマンドを実行します。
$ ssh-copy-id [email protected]
初めてホストに接続する場合は、次の出力が表示されます。続行するには、‘yes’
と入力します Enterキーを押して続行します。
このコマンドは、ローカルシステムで公開鍵 id_rsa.pubをプローブします。 プレゼンスが確立されると、リモートユーザーのパスワードの入力を求められます。
パスワードを入力してENTERを押します 。公開鍵は、リモートホストの~/.ssh/authorized_keys
にコピーされます。 ファイル。これについては後で説明します。
ローカルシステムでは、~/.ssh/known_hosts
ファイルが作成されます。これは、接続したリモートホストのSSHフィンガープリントを含むファイルです。
ファイルを表示するには、次のコマンドを実行するだけです。
$ cat ~/.ssh/known_hosts
パスワードなしのリモートLinuxへの接続
この時点で、パスワードなしでリモートホストにログインできるはずです。試してみるには、通常どおりログインしてみてください。
$ ssh [email protected]
今回は、すぐにリモートホストのシェルに移動します。
先に述べたように、公開鍵は authorized_keysに保存されます リモートホスト上のファイル。図のように確認できます。
$ ls -la ~/.ssh/
ファイルを表示するには、次のようにcatコマンドを使用します。
$ cat ~/.ssh/authorized_keys
SSHパスワード認証を無効にする
SSH 公開鍵認証が正常に設定されました。ただし、パスワード認証は引き続きアクティブであるため、リモートホストはブルートフォース攻撃を受けやすくなります。
そのため、パスワード認証を無効にすることを強くお勧めします。次に、rootまたはsudoユーザーを使用してリモートホストにログインし直します。次に、 sshd_configを開きます 構成ファイル。
$ sudo vim /etc/ssh/sshd_config
下にスクロールして、 PasswordAuthenticationを見つけます 指令。コメントアウトされている場合は、コメントを解除して'no'
に設定します 。
PasswordAuthentication no
変更を保存してファイルを終了します。
加えた変更を適用するには、 sshdを再起動します 示されているデーモン。
$ sudo systemctl restart sshd
この時点で、SSHパスワード認証はリモートサーバーで無効になっており、リモートサーバーにアクセスする唯一の可能な方法は公開鍵認証を使用することです。
SSHが正常に構成されました パスワードなしでログインできるリモートホストでのキーベースの認証。これは、秘密鍵の機密性と秘密性が維持されている場合に、リモートホストにログインする最も安全な方法です。