GNU/Linux >> Linux の 問題 >  >> Cent OS

CentOS7でSSHキーを生成および設定する方法

はじめに

セキュアシェル SSH )は、Linuxユーザーがリモートサーバーに接続するために使用する暗号化されたプロトコルです。

一般に、クライアントがサーバーにアクセスするには、パスワードベースの認証と公開鍵ベースの認証の2つの方法があります。

パスワードのより安全な代替手段として、認証にSSHキーを使用することを強くお勧めします。

このチュートリアルでは、 CentOS 7でSSHキーを生成および設定する方法について説明します。また、キーを使用したリモートサーバーへの接続とパスワード認証の無効化についても説明します。 。

始める前に

1.既存のキーを確認します

インストールする前に、クライアントマシンに既存のキーがあるかどうかを確認することをお勧めします。

ターミナルを開き、次のコマンドで保存されているすべての公開鍵を一覧表示します。

ls -l ~/.ssh/id_*.pub

出力は、現在システム上に生成されたキーについて通知します。存在しない場合は、/.ssh/id_*.pubにアクセスできないことを示すメッセージが表示されます。 、そのようなファイルやディレクトリがないため。

2.SSHがインストールされていることを確認します

パッケージがインストールされているかどうかを確認するには、次のコマンドを実行します。

ssh -V

すでにSSHを使用している場合、出力には実行中のバージョンが示されます。現在、最新バージョンは OpenSSH 8.0 / 8.0p1

CentOSでSSHキーを作成する手順

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

1.ソースマシン(ローカルサーバー)にログインし、2048ビットRSAキーペアを作成することから始めます。 コマンドの使用:

ssh-keygen -t rsa

セキュリティ対策を強化したい場合は、4096ビットキーを作成できます。 -b 4096フラグを追加する:

ssh-keygen -t rsa -b 4096

2.コマンドを入力すると、次のプロンプトが表示されます。

Generating public/private rsa key pair.
Enter file in which to save the key (home/your_username/.ssh/id_rsa):

3.提案されたディレクトリにファイルを保存するには、 Enterを押します。 。または、別の場所を指定することもできます。

4.次に、プロンプトは次のように続きます:

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

パスフレーズの作成は必須ではありませんが、強くお勧めします。

5.最後に、次の情報を指定して出力を終了します。

Your identification has been saved in home/your_username/.ssh/id_rsa.
Your public key has been saved in home/your_username/.ssh/id_rsa.pub.
The key fingerprint is:
KYg355:gKotTeU5NQ-5m296q55Ji57F8iO6c0K6GUr5:PO1iRk
[email protected]
The key's randomart image is:
+------[RSA 3072]-------+
|       .oo.            |
|        +o+.           |
|      + +.+            |
| o  +          S .     |
|      .    E  .   . =.o|
|    .  +       .   [email protected]|
|        +   .     oo*=O|
|   oo            . .+o+|
|                 o=ooo=|
+------ [SHA256] ------+

次に、公開鍵をリモートCentOSサーバーに追加する必要があります。

ステップ2:公開鍵をCentOSサーバーにコピーする

いくつかの異なる方法を使用して、リモートサーバーに公開SSHキーをコピーできます。

  1. ssh-copy-idスクリプトを使用する
  2. セキュアコピー(scp)の使用
  3. キーを手動でコピーする

最も速くて簡単な方法は、 ssh-copy-idを利用することです。 。オプションが利用可能な場合は、それを使用することをお勧めします。それ以外の場合は、記載されている他の2つのいずれかを試してください。

ssh-copy-idを使用して公開鍵をコピーする

1.次のコマンドを入力し、SSHユーザーアカウントとリモートホストのIPアドレスを指定することから始めます。

ssh-copy-id [email protected]_host

ローカルコンピュータがこの特定のリモートサーバーに初めてアクセスする場合は、次の出力が表示されます。

The authenticity of host '104.0.316.1 (104.0.316.1)' can't be established.
ECDSA key fingerprint is KYg355:gKotTeU5NQ-5m296q55Ji57F8iO6c0K6GUr5:PO1iRk.
Are you sure you want to continue connecting (yes/no)? yes

2.接続を確認します–「はい」と入力します Enterを押します 。

3. id_rsa.pub keyが見つかったら ローカルマシンで作成された場合、リモートアカウントのパスワードを入力するように求められます。パスワードを入力し、 Enterを押します 。

4.接続が確立されると、リモートサーバーに公開鍵が追加されます。これは、 ~/.ssh/id_rsa.pubをコピーすることによって行われます。 リモートサーバーの~/.sshにファイルします ディレクトリ。 authorized_keysという名前で見つけることができます

5.最後に、出力には、追加されたキーの数と、次に何をするかについての明確な指示が示されます。

Number of key(s) added: 1
Now try logging into the machine, with: "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

セキュアコピーを使用した公開鍵のコピー

1.まず、リモートユーザーとのSSH接続を設定します。

ssh [email protected]_host

2.次に、 ~/.sshを作成します ディレクトリとauthorized_keys ファイル:

mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys

3. chmodを使用します ファイルのアクセス許可を変更するコマンド:

chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys

chmod 700 ファイルを実行可能にします 、 chmod 600 ユーザーが読み取りと書き込みできるようにします ファイル。

4.次に、ローカルコンピューターで新しいターミナルセッションを開きます。

5. id_rsa.pubからコンテンツをコピーします (SSH公開鍵)以前に作成された authorized_keys 次のコマンドを入力して、リモートCentOSサーバー上のファイルを作成します。

scp ~/.ssh/id_rsa.pub [email protected]_host:~/.ssh/authorized_keys

これにより、公開鍵はリモートアカウントに安全に保存されました。

公開鍵を手動でコピーする

1.リモートマシンに公開SSHキーを手動で追加するには、最初に ~/.ssh/id_rsa.pubからコンテンツを開く必要があります。 ファイル:

cat ~/.ssh/id_rsa.pub

2.次の画像のように、キーはssh-rsaで始まり、ローカルコンピューターのユーザー名とリモートマシンのホスト名で終わります。


3.後で必要になるので、ファイルの内容をコピーします。

4.次に、ターミナルウィンドウで、公開鍵をコピーするリモートサーバーに接続します。次のコマンドを使用して接続を確立します。

ssh [email protected]_host

5. 〜/.sshディレクトリを作成します およびauthorized_keys 次のコマンドを使用してCentOSサーバー上のファイル:

mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys

6.次のように入力して、ファイルのアクセス許可を変更します。

chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys

7.次に、authorized_keysを開きます お好みのエディタでファイルします。たとえば、Nanoで開くには、次のように入力します。

nano authorized_keys

8.以前にステップ2でコピーした公開鍵を追加します このセクションの、(既存のコンテンツの下の)の新しい行にあります。

9.変更を保存して、ファイルを閉じます。

10.最後に、サーバーにログインして、すべてが正しく設定されていることを確認します。

ステップ3:SSHキーを使用してリモートサーバーに接続する

前の手順(RSAキーペアの作成と公開キーのCentOSサーバーへのコピー)を完了すると、リモートアカウントのパスワードを入力しなくてもリモートホストに接続できるようになります。

次のコマンドを入力するだけです。

ssh [email protected]_host

SSHキーペアの作成時にパスフレーズを指定しなかった場合は、リモートサーバーに自動的にログインします。

それ以外の場合は、最初の手順で指定したパスフレーズを入力して、 Enterを押します。 。

シェルがキーの一致を確認すると、サーバーと直接通信するための新しいセッションが開きます。

ステップ4:パスワード認証を無効にする

パスワードを入力せずにCentOSサーバーにアクセスできましたが、マシン上でパスワードベースの認証システムが実行されています。これにより、ブルートフォース攻撃の標的になる可能性があります。

概要の手順に従って、パスワード認証を完全に無効にする必要があります。

1. SSHキーを使用して、管理者権限を持つリモートCentOSサーバーにログインします。

ssh [email protected]_host

2.次に、選択したテキストエディタを使用してSSHデーモン構成ファイルを開きます。

sudo nano /etc/ssh/sshd_config

3.ファイル内で次の行を探します。

PasswordAuthentication yes

4.yesを変更して構成を編集します noの値 。したがって、ディレクティブは次のようになります。

PasswordAuthentication no

5.ファイルを保存して、テキストエディタを終了します。
6.変更を有効にするには、 sshdを再起動します サービス コマンドの使用:

sudo systemctl restart sshd.service

7.サーバーへのSSH接続がまだ正しく機能していることを確認します。新しいターミナルウィンドウを開き、次のコマンドを入力します:

ssh [email protected]_host

Cent OS
  1. SSHキーを設定する方法

  2. CentOS 7でSSHキーを設定する-ステップバイステップのプロセス?

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

  1. Ubuntu18.04でSSHキーを生成する方法

  2. CentOS8でSSHキーを設定する方法

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

  1. パスワードなしのSSHログインを設定する方法

  2. Windows10でSSHキーを生成する方法

  3. Debian10でSSHキーを生成および設定する方法