GNU/Linux >> Linux の 問題 >  >> Ubuntu

スクリプトを使用して複数のリモートサーバーのパスワードなしのSSHログインを設定する

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]

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


Ubuntu
  1. 公開鍵と秘密鍵のペアを使用したパスワードなしのSSH

  2. Linux で「パスワードなし」の ssh ログイン用に SSH キーをセットアップする方法

  3. CentOS/RHEL で「パスワードレス」SSH ログイン用の SSH キーをセットアップする方法

  1. パスワードなしでSSHログインを設定する方法

  2. Linux で SSH の「公開/秘密鍵」ログイン用の SSH キーをセットアップする方法

  3. 複数のマシンで同じ SSH 秘密鍵を使用する

  1. パスワードなしのSSHログインを設定する方法

  2. UbuntuServerのインストール後のシンプルなBASHスクリプト

  3. Linux でパスワードなしの SSH ログインをセットアップする方法