🔐 Настройка входа по SSH без пароля для нескольких удаленных серверов с помощью скрипта – Information Security Squad
🔐 Настройка входа по SSH без пароля для нескольких удаленных серверов с помощью скрипта
Аутентификация на основе ключей SSH (также известная как аутентификация с открытым ключом) позволяет использовать аутентификацию без пароля, и это более безопасное и гораздо лучшее решение, чем аутентификация по паролю.
Одним из основных преимуществ входа в систему без пароля по SSH, не говоря уже о безопасности, является то, что он позволяет автоматизировать различные виды межсерверных процессов.\
В этой статье мы продемонстрируем, как создать пару ключей SSH и скопировать открытый ключ на несколько удаленных хостов Linux одновременно с помощью скрипта шелла.

Создайте новый ключ SSH на Linux

Сначала сгенерируйте пару ключей SSH (закрытый ключ / ключ идентификации, который SSH-клиент использует для аутентификации при входе на удаленный SSH-сервер, и открытый ключ, хранящийся в качестве авторизованного ключа в удаленной системе, на которой запущен SSH-сервер), используя ssh- keygen следующим образом:
# ssh-keygen

Создание скрипта bash для нескольких удаленных входов

Затем создайте скрипт, который поможет скопировать открытый ключ на несколько удаленных хостов 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' не найден!"
        exit 1
fi

if [ ! -f $HOST_FILE ]; then
        echo "File '$HOST_FILE' не найден!"
        exit 2
fi

for IP in `cat $HOST_FILE`; do
        ssh-copy-id -i $PUBLIC_KEY_FILE $USER_NAME@$IP 2>$ERROR_FILE
        RESULT=$?
        if [ $RESULT -eq 0 ]; then
                echo ""
                echo "Открытый ключ успешно скопирован на $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 root@10.2.32.12

Если у вас есть какие-либо особые возможности для улучшения скрипта, сообщите нам об этом через форму обратной связи ниже.

 


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *