SSHキーベースの認証(公開キー認証とも呼ばれます)は、パスワードなしの認証を可能にし、パスワード認証よりも安全ではるかに優れたソリューションです。 SSHのパスワードなしのログインの主な利点の1つは、セキュリティはもちろんのこと、さまざまな種類のクロスサーバープロセスの自動化を可能にすることです。
関連記事 :OpenSSHサーバーを保護および強化する方法この記事では、シェルスクリプトを使用して、SSHキーペアを作成し、公開キーを複数のリモートLinuxホストに一度にコピーする方法を示します。
Linuxで新しいSSHキーを作成する
まず、 ssh-keygen 次のようにコマンドを実行します:
# ssh-keygen

複数のリモートログイン用のシェルスクリプトを作成する
次に、公開鍵を複数のリモートLinuxホストにコピーするのに役立つシェルスクリプトを作成します。
# vim ~/.bin/ssh-copy.sh
次のコードをコピーしてファイルに貼り付けます(次の変数を適宜USER_NAME
に置き換えます。 –接続するユーザー名HOST_FILE
–ホスト名またはIPアドレスのリスト、およびERROR_FILE
を含むファイル – sshコマンドエラーを保存するファイル)。
#!/bin/bash USER_NAME="root" HOST_FILE="/root/hosts" ERROR_FILE="/tmp/ssh-copy_error.txt" PUBLIC_KEY_FILE="$1" if [ ! -f $PUBLIC_KEY_FILE ]; then echo "File '$PUBLIC_KEY_FILE' not found!" exit 1 fi if [ ! -f $HOST_FILE ]; then echo "File '$HOST_FILE' not found!" exit 2 fi for IP in `cat $HOST_FILE`; do ssh-copy-id -i $PUBLIC_KEY_FILE [email protected]$IP 2>$ERROR_FILE RESULT=$? if [ $RESULT -eq 0 ]; then echo "" echo "Public key successfully copied to $IP" echo "" else echo "$(cat $ERROR_FILE)" echo exit 3 fi echo "" done
ファイルを保存して閉じます。
次に、 chmodを使用してスクリプトを実行可能にします 示されているコマンド。
# chmod +x ssh-copy.sh
次に、ssh-copy.sh
を実行します スクリーンショットに示すように、スクリプトを作成し、公開鍵ファイルを最初の引数として指定します。
# ./ssh-copy.sh /root/.ssh/prod-rsa.pub

次に、ssh-agent
を使用します 復号化された秘密鍵をメモリに保持し、それを使用してログインを認証する鍵を管理します。 ssh-agent
を開始した後 、次のように秘密鍵を追加します。
# eval "$(ssh-agent -s)" # ssh-add ~/.ssh/prod_rsa

パスワードなしでリモートLinuxサーバーにログイン
これで、SSHユーザー認証用のパスワードを指定しなくても、任意のリモートホストにログインできます。このようにして、クロスサーバープロセスを自動化できます。
# ssh [email protected]

それが私たちがあなたのために持っていたすべてです!特にシェルスクリプトの改善に貢献したい場合は、以下のフィードバックフォームからお知らせください。