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