웹사이트 검색

스크립트를 사용하여 여러 원격 서버에 대해 비밀번호 없는 SSH 로그인 설정


SSH 키 기반 인증(공개 키 인증이라고도 함)은 비밀번호 없는 인증을 허용하며 비밀번호 인증보다 더 안전하고 훨씬 더 나은 솔루션입니다. 보안은 말할 것도 없고 SSH 비밀번호 없는 로그인의 주요 장점 중 하나는 다양한 종류의 서버 간 프로세스를 자동화할 수 있다는 것입니다.

이 기사에서는 쉘 스크립트를 사용하여 SSH 키 쌍을 생성하고 공개 키를 여러 원격 Linux 호스트에 동시에 복사하는 방법을 보여줍니다.

Linux에서 새 SSH 키 만들기

먼저 을 사용하여 SSH 키 쌍(SSH 클라이언트가 원격 SSH 서버에 로그인할 때 자신을 인증하는 데 사용하는 개인/ID 키와 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 $USER_NAME@$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 

그게 우리가 당신을 위해 가지고 있던 전부입니다! 쉘 스크립트 개선에 특별히 기여할 사항이 있으면 아래 피드백 양식을 통해 알려주십시오.