privateKey を使用して SSH サーバーにログインする理由
普段 Linux サーバーにログインするときは、ユーザー名とパスワードを使ってログインすることが多いのですが、コード接続やその他の操作に使用する場合は、より安全な方法でログインする必要があり、ログインには privateKey が必要です。 SSHサーバーに
SSH ログインの概要
- RSA 非対称暗号化
- SSH でログインすると、RSA キーを使用してログインできます。
- SSH キーは、ツール ssh-keygen を使用して作成できます
作成方法は?
サーバーはキーペアを生成します (ubuntu)
Linux システム ディレクトリの下の .ssh ディレクトリを入力します。
cd ~/.ssh/
この時点で、エラーが表示されました -bash: cd: /root/.ssh/: No such file or directory
[root@localhost ~]# cd ~/.ssh/
-bash: cd: /root/.ssh/: 没有那个文件或目录
エラーを解決する
埋め込む
ssh localhost
エラーが解決され、完了です〜
ls コマンドを実行すると、この時点でディレクトリが表示されます
ssh-keygen を実行して鍵ペアを作成します
キー生成コマンドを実行し、Enter キーを押します~
実行プロセス中に、秘密キーのパスワードを入力するか、パスワードを必要としないかを選択できます~ Enter キーを押すだけです
ssh-keygen -t rsa
コマンドが生成されたら、チェックアウトします
id_rsa id_rsa.pub known_hosts
SSH サーバー構成 (ubuntu)
ディレクトリにauthorized_keysがないことがわかりました。作成します
touch authorized_keys
id_rsa.pubファイルの内容をauthorized_keysに出力
cat id_rsa.pub >> authorized_keys
リモート アクセス テスト
Windows コンピューターを例に、privateKey を介して SSH サーバーにログインできるかどうかを見てみましょう。
id_rsa 秘密鍵を Windows コンピューターにコピーし、秘密鍵があるディレクトリを入力して、次のコマンドを実行します。
ssh -i .\id_rsa [email protected]
再び例外が見つかりました。ホスト 'XXX' の信頼性を確立できません。
PS C:\Users\Administrator\Desktop\fsdownload> ssh -i .\id_rsa [email protected]
The authenticity of host '192.168.33.129 (192.168.33.129)' can't be established.
ECDSA key fingerprint is SHA256:dw6kUF1VDfJ9WXXXXXXXXXXXXXX.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.33.129' (ECDSA) to the list of known hosts.
分析する
その理由は、Linux にリモートでログインするたびに、現在アクセスしているコンピューターの公開鍵が OpenSSH によって記録される ~/.ssh/know_hosts にあるかどうかを Linux がチェックするためです。次に同じコンピュータにアクセスするとき、OpenSSH は公開鍵をチェックします。公開鍵が異なる場合、OpenSSH は DNS ハイジャックなどの攻撃から保護するために警告を発します。ホストの public_key の SSH チェック レベルは、StrictHostKeyChecking 変数に従って構成されます。デフォルトでは、StrictHostKeyChecking=ask です。その 3 つの構成値を簡単に説明します。
- 1. StrictHostKeyChecking=no 最も安全性の低いレベルです。もちろん、迷惑なプロンプトはそれほど多くありません。比較的安全なイントラネット テストに使用することをお勧めします。サーバーに接続するためのキーがローカルに存在しない場合は、ファイルに自動的に追加され (デフォルトは known_hosts)、警告が表示されます。
- 2. StrictHostKeyChecking=ask デフォルト レベルは、今のプロンプトです。接続とキーが一致しない場合は、プロンプトを表示してログインを拒否します。
- 3. StrictHostKeyChecking=yes が最も安全なレベルです。接続がキーと一致しない場合、詳細情報の入力を求めることなく接続が拒否されます。
解決
次のコマンドでログインします
ssh -i .\id_rsa -o StrictHostKeyChecking=no [email protected]
SSH ホスト認証を完全に削除する別の方法は、/etc/ssh/ssh_config 構成ファイルを変更し、ssh_config 構成ファイルに追加することです。
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
おしまい~
今日はここに書きます〜
- 友よ ( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ また明日~~
- みんなが毎日幸せに
記事を修正する必要がある場所を誰でも指摘してください〜
学習は無限であり、協力はウィンウィンです