더보기
처음 배우는 셸 스크립트 책 참고
책에서 bash를 사용하므로 sh가 아닌 bash로 실행
서버가 1~2대 라면 괜찮지만 3대 이상이면 매우 번거로워진다. 이때 shell script를 만들어 사용하면 쉽고 빠르게 ssh 공개 키를 여러 서버에 복사할 수 있다.
ssh 키를 복사하려면 ssh 키를 먼저 생성한 후 여러 서버에 복사해야 한다.
어떤 계정으로 키를 복사할지 여부와 해당 계정의 패스워드를 알고 있어야 한다.
스크립트
#!/bin/bash
# 접속할 서버 정보, SSH 키 경로, 공개 키 경로를 변수에 저장
servers="host01"
sshKey="$HOME/.ssh/key.pem"
sshPub="$HOME/.ssh/key.pem.pub"
# SSH 키 생성
ssh-keygen -q -N "" -f $sshKey
# 생성된 키를 해당 서버에 복사
for server in $servers
do
echo "$server로 키 복사"
sshpass -p "$1" ssh-copy-id -i $sshPub stack@server
done
실습
위 스크립트를 응용해서 키를 생성하여 2대에 서버에 SSH 키를 복사하였다.
#!/bin/bash
# 서버 목록
servers=("node01" "node02")
username=("worker1" "worker2")
sshKey="$HOME/.ssh/id_ed25519"
sshPub="${sshKey}.pub"
pwd="$1"
if [ -z $pwd ]
then
echo "Input password"
exit 1
fi
if [ ! -f $sshKey ] || [ ! -f $sshPub ]
then
echo "Create SSH Key"
ssh-keygen -t ed25519 -f $sshKey -N
fi
for ((i=0; i<2; i++))
do
echo "Copy to ${username[$i]}@${servers[$i]}"
sshpass -p $pwd ssh-copy-id -i $sshPub -o StrictHostKeyChecking=no ${username[$i]}@${servers[$i]}
done
echo "Finish"
bash 명령으로 실행해야 하고 명령어 뒤에 접속하는 서버 비밀번호를 입력하면 된다.
나는 두 서버 비밀번호가 같아서 한 번만 인자를 입력받았다.
결과적으로 각 서버에 접속하여 .ssh/authorized_keys를 확인하면 키가 복사되었음을 확인할 수 있다.
'Linux' 카테고리의 다른 글
[Linux] Shell Script를 이용하여 패키지 리포지토리 다운로드 (0) | 2025.06.23 |
---|---|
[Linux] Shell Script를 이용하여 Timezone 설정 (0) | 2025.06.22 |
[Linux] Shell Script를 활용하여 사용자 계정 생성 (0) | 2025.06.16 |
[Linux] 리눅스마스터 2급 2차 정리 (12) (2) | 2025.06.13 |
[Linux] 리눅스마스터 2급 2차 정리 (11) (3) | 2025.06.13 |