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 におけるセミコロンの詳細

推薦する

Javascript と Vue を組み合わせて、あらゆる迷路画像の自動パス検索を実現します。

目次序文2次元配列、一方向基本インターフェースのマッピング幅優先、包括的検索マップ編集経路探索アルゴ...

Mysql SQL ステートメントのコメント

MySQL SQL ステートメントにコメントを追加できます。MySQL SQL ステートメントのコメ...

CentOS のデフォルトの SSH ポート番号を変更する方法の例

LinuxサーバーのデフォルトのSSHポート番号は通常22なので、ほとんどのユーザーはセキュリティ上...

JVM 上の高性能データ形式ライブラリ パッケージである Apache Arrow の紹介とアーキテクチャ (Gkatziouras)

Apache Arrow は、BigQuery を含むさまざまなビッグデータ ツールで使用される一...

Zabbixで指定時間内の変化値を設定する方法の詳細な説明

背景説明: 既存の負荷分散装置には、付加価値状態にある指標があります (増加するだけで減少しないため...

Dockerコンテナでの静的ウェブサイトレイアウトの実装

サーバーの配置数日間無料で使用できるクラウドサーバー(Alibaba Cloud、Huawei Cl...

MySQLでSQLクエリ文がどのように実行されるかを分析する

目次1. MySQL論理アーキテクチャの概要2. コネクタクエリキャッシュ4. パーサー5. オプテ...

JavaScript でフォロー広告を実装するためのサンプルコード

フローティング広告は、ウェブサイト上で非常に一般的な広告形式です。フローティング広告は、ユーザーの閲...

JavaScriptアニメーション関数のカプセル化の詳細な説明

目次1. アニメーション機能の原理2. アニメーション関数のシンプルなカプセル化3. アニメーション...

メモリ構成が過剰でMySQLが起動できない問題の解決方法

問題の説明MySQL の起動時にエラーが報告されます。エラー ログを確認してください。 [エラー] ...

JS を使用して Web ページのウォーターフォール レイアウトを実装する方法

目次序文:ウォーターフォールレイアウトとは何ですか?達成方法: 1. 画像を取得する2. 画像の帯域...

HTML テーブルタグチュートリアル (17): テーブルタイトルの垂直配置属性 VALIGN

表のキャプションは表の上または下に配置でき、プロパティで調整できます。デフォルトのテーブル タイトル...

WeChat アプレット学習 WXS 使用方法チュートリアル

wxsとは何ですか? wxs (WeiXin Script) は、小規模プログラム用のスクリプト言語...

MySQL の遅いクエリの落とし穴

目次1. 遅いクエリ構成1-1. スロークエリを有効にする2. 遅いクエリSQLの分析を説明する3....

JS でタブ効果を書く

この記事の例では、タブ効果を記述するためのJSの具体的なコードを参考までに共有しています。具体的な内...