Linux 構成 SSH パスワードフリーログイン「ssh-keygen」の基本的な使い方

Linux 構成 SSH パスワードフリーログイン「ssh-keygen」の基本的な使い方

1 SSHとは何か

Baidu百科事典より引用:

SSH は、IETF のネットワーク ワーキング グループによって開発された Secure Shell の略称です。アプリケーション層に基づくセキュリティ プロトコルです。

SSH は現在、リモート ログイン セッションやその他のネットワーク サービスにセキュリティを提供するために設計された最も信頼性の高いプロトコルです。 SSH プロトコルを使用すると、リモート管理中の情報漏洩を効果的に防ぐことができます。

SSH はもともと UNIX システム上のプログラムでしたが、その後すぐに他のオペレーティング プラットフォームにも拡張されました。

異なるプラットフォーム/ネットワーク ホスト間の通信のセキュリティを確保するには、多くの場合、SSH による認証が必要です。SSH 認証には主に 2 つの方法があります。

① パスワードベースのセキュリティ認証:ログインするたびにユーザー名とパスワードを入力する必要があります。パスワードはネットワーク経由で送信する必要があるため、中間者攻撃のリスクがあります。
② キーベースのセキュリティ認証:設定が完了すると、パスワードなしでログインできます。この方法はより安全です。ネットワーク上でパスワードを渡す必要がなく、公開キーを一度送信するだけで済みます。一般的なgit ssh方式は公開キーで認証されます。

2 SSHパスワードフリーログインを設定する

注: このデモで使用されるサーバー オペレーティング システムは Cent OS 7 です。目標は次のとおりです。

サーバー A (172.16.22.131) はパスワードなしでサーバー B (172.16.22.132) にログインできます。

注意: ssh 接続は一方向です。A はパスワードなしで B にログインできますが、同時に B はパスワードなしで A にログインすることはできません。

2.1 必要なソフトウェアのインストール

操作する前に、必要なソフトウェアが正しくインストールされていることを確認してください。

ここではssh-keygenssh-copy-idをインストールする必要があります。インストール方法は次のとおりです。

# ssh-keygen をインストールします。サーバーがインターネットに接続できることを確認します。すでにインストールされているので、何もする必要はありません。
[root@localhost ~]# yum install -y ssh-keygen
読み込まれたプラグイン: fastestmirror、langpacks
ベース | 3.6 kB 00:00:00  
エペル | 3.6 kB 00:00:00  
特典 | 2.9 kB 00:00:00  
アップデート | 2.9 kB 00:00:00  
キャッシュされたホストファイルからミラー速度をロードする
利用可能なパッケージ ssh-keygen がありません。
エラー: 何もできません

# ssh-copy-id をインストールする
[root@localhost ~]# yum install -y ssh-copy-id 
読み込まれたプラグイン: fastestmirror、langpacks
キャッシュされたホストファイルからミラー速度をロードする
利用可能なパッケージ ssh-copy-id がありません。
エラー: 何もできません

2.2 ssh-keygenは公開鍵と秘密鍵のペアを作成する

(1)指定されたディレクトリにRSA鍵を生成し、コメントを「shoufeng」と指定します。実装例:

[root@localhost ~]# ssh-keygen -t rsa -f ~/.ssh/id_rsa -C "shoufeng"
# ~キーの種類~キーファイルのパスと名前~備考 公開/秘密 RSA キー ペアを生成しています。
パスフレーズを入力してください (パスフレーズがない場合は空白): # パスワードを入力するか、入力したくない場合は Enter キーを押します 同じパスフレーズをもう一度入力してください: # パスワードをもう一度確認するか、入力したくない場合は Enter キーを押します ID は /root/.ssh/id_rsa に保存されました。
公開鍵は /root/.ssh/id_rsa.pub に保存されました。
キーのフィンガープリントは次のとおりです。
9a:e3:94:b9:69:c8:e9:68:4b:dc:fa:43:25:7f:53:f1 ショウフェン
キーのランダムアート画像は次のとおりです。
+--[RSA 2048]----+
| |
| . |
| か |
| . . . E |
| + S |
| . .. .=o |
|oo.oB. . |
| ..o=o.+ |
| .++oo+ |
+-----------------+

注: キー ファイル名は id_xxx である必要があります。xxx は -t パラメータで指定されたキー タイプです。たとえば、キー タイプが rsa の場合、キー ファイル名は id_rsa である必要があります。

(2)ssh-keygenの共通パラメータの説明:

-t: キー タイプ。dsa | ecdsa | ed25519 | rsa を選択できます。

-f: キーディレクトリの場所。デフォルトは、現在のユーザーのホームパスの下の .ssh 隠しディレクトリ、つまり ~/.ssh/ で、デフォルトのキーファイル名は id_rsa で始まります。ルートユーザーの場合は /root/.ssh/id_rsa にあり、他のユーザーの場合は /home/username/.ssh/id_rsa にあります。

-C: このキーのコメント情報を指定します。複数のパスワードなしのログインを設定する必要がある場合は、これを使用することをお勧めします。

-N: このキー ペアのパスワードを指定します。このパラメータを指定すると、コマンド実行中に対話型の確認パスワード情報は表示されません。

たとえば、ディレクトリの場所、パスワード、コメント情報を同時に指定すると、作成を完了するために Enter キーを押す必要はありません。

ssh-keygen -t rsa -f ~/.ssh/id_rsa -N shoufeng -C shoufeng

(3)生成されたファイルを表示するには、~/.ssh/ディレクトリに移動します。

# 生成されたファイルは test_rsa で始まります。test_rsa は秘密鍵、test_rsa.pub は公開鍵です。
[root@localhost .ssh]# ls
テスト_rsa テスト_rsa.pub

# cat コマンドを使用して公開鍵ファイルを表示します。 
[root@localhost .ssh]# cat id_rsa.pub 
SSHA AAAB3NZAC1YC2EAAAADEQABAAABAQCC2JPLMQGEG9JB9ZTOCW0WMS8HDVPFXTTHQG1VOQTOJI/CP0+8RUZL3P6NTZQFHBS0ITCY0PIPIJGGGXVRVNINGBRVNINCVNINGBNINGBRVNINGBNINGBNINGBNINGBNINGBNINGBNINGBRVNISPLVITFLVILVILVILVILVITFLVILVITFLVINTXXBRYNVNINGBRVNIC 372WOVLANQ7MXQ06QAONJURD0C64XQDJFKB1OVS/NYKAOR9D8YQ/FXFWKKKQ7TZJM0CVBAG7+YR8LC9TJTCYPMNXNNNGISLIPZJBCNFT+5VTCFSENFSENFJISLIPZJMZD60CCCFSENFSCFSENFSCFSFJSFJD60CCCFSENFSENFSCFSCFSENFSCFSENFSCFSCFSENFSENFSFJSFJD60CCFSCFSENFSENFSCFJSFJD60CCCFSENFSENFJSFJD60CCFJD60CCFJD60 cucztqssitmyf3dyhqmrxl+cj2vjzwvzru6iy7bpqjfwfyy9m8kal0pz+jjuau7esvbxf6hjcqhypp2btuyff+vdv shoufeng
# 最後にコメントがあることがわかります shoufeng

2.3 ssh-copy-idはAの公開鍵をBに送信する

デフォルトの使用方法は、ssh-copy-id [email protected] です。リモート サーバーに接続するときの ssh-copy-id コマンドのデフォルト ポートは 22 です。もちろん、ファイル、リモート ホスト IP、ユーザー、ポートを指定することもできます。

# コピーするローカルファイル、リモートホストの IP + ユーザー名 + ポート番号を指定します:
[root@localhost .ssh]# ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22 [email protected]
/usr/bin/ssh-copy-id: INFO: すでにインストールされているキーを除外するために、新しいキーでログインしようとしています
/usr/bin/ssh-copy-id: INFO: インストールするキーが 1 つ残っています -- ここでプロンプトが表示された場合は、新しいキーをインストールしてください
[email protected] のパスワード: # パスワードを入力すると、公開鍵がコピーされます 追加された鍵の数: 1

ここで、「ssh -p '22' '[email protected]'」を使用してマシンにログインしてみます。
必要なキーだけが追加されたことを確認します。

2.4 パスワードなしでサーバーAからサーバーBにログインする

[root@localhost .ssh]# ssh [email protected]
最終ログイン: 2019 年 6 月 14 日金曜日 08:46:04 192.168.34.16 から # ログイン成功😄

3 詳細な説明

3.1 公開鍵ファイルを送信するその他の方法

上記の 2.3 の手順では、公開鍵ファイルを ssh-copy-id ツールを使用して送信します。もちろん、他の方法でも実行できます。

(1)Aの公開鍵ファイルをBに送信する:

scp コマンドを使用して、サーバー A の公開鍵ファイルをサーバー B のユーザー ディレクトリに送信します。パスワードなしのログインが正常に構成されていないため、サーバー B の対応するユーザーのパスワードを入力する必要があります。

[root@localhost .ssh]# scp id_rsa.pub [email protected]:/root/.ssh 
[email protected]のパスワード: 
id_rsa.pub 100% 390 0.4KB/秒 00:00

(2)Bにauthorized_keysファイルを作成する。

[root@localhost .ssh]# cd /root/.ssh/
[root@localhost .ssh]# ls
id_rsa.pub
# サーバー A の公開鍵を使用して「authorized_keys」ファイルを生成します。
[root@localhost .ssh]# cat id_rsa.pub >> authorized_keys
[root@localhost .ssh]# cat authorized_keys 
SSHA AAAB3NZAC1YC2EAAAADEQABAAABAQCC2JPLMQGEG9JB9ZTOCW0WMS8HDVPFXTTHQG1VOQTOJI/CP0+8RUZL3P6NTZQFHBS0ITCY0PIPIJGGGXVRVNINGBRVNINCVNINGBNINGBRVNINGBNINGBNINGBNINGBNINGBNINGBNINGBRVNISPLVITFLVILVILVILVILVITFLVILVITFLVINTXXBRYNVNINGBRVNIC 372WOVLANQ7MXQ06QAONJURD0C64XQDJFKB1OVS/NYKAOR9D8YQ/FXFWKKKQ7TZJM0CVBAG7+YR8LC9TJTCYPMNXNNNGISLIPZJBCNFT+5VTCFSENFSENFJISLIPZJMZD60CCCFSENFSCFSENFSCFSFJSFJD60CCCFSENFSENFSCFSCFSENFSCFSENFSCFSCFSENFSENFSFJSFJD60CCFSCFSENFSENFSCFJSFJD60CCCFSENFSENFJSFJD60CCFJD60CCFJD60 cucztqssitmyf3dyhqmrxl+cj2vjzwvzru6iy7bpqjfwfyy9m8kal0pz+jjuau7esvbxf6hjcqhypp2btuyff+vdv shoufeng

注意: 上記のリダイレクトを追加するには >> を使用してください。> は使用しないでください。> を使用すると、元のコンテンツがクリアされます。

3.2 ファイルの権限

秘密鍵ファイルと公開鍵ファイルが認証で機能するには、権限の正確性を確認する必要があります。

① .ssh ディレクトリとその中の公開鍵ファイルおよび秘密鍵ファイルについては、現在のユーザーには少なくとも実行権限が必要であり、他のユーザーには最大でも実行権限しか付与できません。

② 便宜上、権限を 777 に設定しないでください。権限が多すぎると安全ではなく、デジタル署名はこの権限戦略をサポートしていません。

③ 一般ユーザーの場合は、権限を 600 に設定することをお勧めします: chmod 600 authorized_keys id_rsa id_rsa.pub;

④ rootユーザーの場合、権限を644に設定することをお勧めします:chmod 644 authorized_keys id_rsa id_rsa.pub。

3.3 ファイルの編集と表示

Liunx 環境では、秘密鍵、公開鍵、authorized_keys ファイルを表示またはコピーする場合、不要な改行が生成されるため、vim などのエディターを使用して開かないでください。

cat、more、less などの表示コマンドを使用してコンテンツを端末に出力し、その後、表示、コピーなどの操作を実行する必要があります。

要約する

上記は、編集者が紹介した Linux で SSH パスワードフリーログインを構成するための「ssh-keygen」の基本的な使用方法です。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。編集者がすぐに返信します。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。
この記事が役に立ったと思われた方は、ぜひ転載していただき、出典を明記してください。ありがとうございます!

以下もご興味があるかもしれません:
  • Linux は SSH 公開鍵を使用してパスワード不要のログイン例を実装します
  • Linux リモートログイン SSH パスワードフリー設定方法
  • Linux 上で SSH パスワードフリーのログインとキー管理、配布、および SHELL スクリプト共有の展開を実装します。

<<:  MySQLの一般的なメモリ不足による起動失敗に対する完璧な解決策

>>:  JavaScript におけるセミコロンの詳細

推薦する

CSS スティッキーフッター実装コード

この記事では、CSS スティッキー フッターの実装コードを紹介し、共有します。詳細は次のとおりです。...

Docker インストール rocketMQ チュートリアル (最も詳細)

RocketMQ は、Alibaba が設計した分散型のキューベースのメッセージング ミドルウェア...

MySQL で特定の親行のすべての子行を見つけるソリューション

序文注: テストデータベースのバージョンはMySQL 8.0ですテーブルを作成し、ユーザー scot...

js でオブジェクトを作成するさまざまな方法とその長所と短所のまとめ

目次初期作成方法ファクトリーパターンコンストラクターパターンコンストラクタパターンの最適化プロトタイ...

MYSQL メタデータ ロック (MDL ロック) の理論とロック タイプ テスト

目次MYSQL メタデータ ロック (MDL ロック) 学習理論とロック タイプ テスト1. 予備的...

Nginx サービス クイック スタート チュートリアル

目次1. Nginx の紹介1. Nginx とは何ですか? 2. Nginx を使用する理由3. ...

時間範囲効果を実現するためのJavaScript

この記事では、時間範囲効果を実現するためのJavaScriptの具体的なコードを参考までに紹介します...

Tomcatはスレッドプールを使用してリモート同時リクエストを処理します。

Tomcatが同時リクエストを処理する方法を理解することで、スレッドプール、ロック、キュー、および...

VirtualBox で作成された Debian 仮想マシンは Windows ホストとファイルを共有します

用語: 1. VM: 仮想マシンステップ: 1. Windows 10 に VirtualBox 6...

Dockerを使用してMySQLデータベースをインストールするDeepinの詳細な説明

まずMySQLソースをクエリするdocker 検索 mysql公式ウェブサイトにアクセスしてイメージ...

CSS で画像アダプティブ コンテナを実装するいくつかの方法 (要約)

多くの場合、画像をコンテナのサイズに合わせて調整する必要があります。 1. imgタグ方式幅と高さを...

MySQLイベント計画タスクに関する簡単な説明

1. イベントが有効になっているかどうかを確認する'%sche%' のような変数を表...

CSS フレキシブルレイアウト FLEX、メディアクエリ、モバイルクリックイベントの実装

フレックスレイアウト定義: Flexレイアウトの要素は、 Flex 、または略して「コンテナー」と呼...

Reactはラジオコンポーネントのサンプルコードを実装します

この記事の目的は、最も明確な構造を使用していくつかのコンポーネントの基本機能を実装することです。皆さ...

ブラウザ(IEシリーズ)を判別するための条件付きコメント

<!--[if IE 6]> IE6 のみが認識可能 <![endif]-->...