はじめに
セキュアシェル ( 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キーをコピーできます。
- ssh-copy-idスクリプトを使用する
- セキュアコピー(scp)の使用
- キーを手動でコピーする
最も速くて簡単な方法は、 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