[Linux] Shell Script을 활용하여 SSH 키 복사

2025. 6. 18. 17:46·Linux
더보기

처음 배우는 셸 스크립트 책 참고

책에서 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
'Linux' 카테고리의 다른 글
  • [Linux] Shell Script를 이용하여 패키지 리포지토리 다운로드
  • [Linux] Shell Script를 이용하여 Timezone 설정
  • [Linux] Shell Script를 활용하여 사용자 계정 생성
  • [Linux] 리눅스마스터 2급 2차 정리 (12)
The Engineer, Lucy
The Engineer, Lucy
  • The Engineer, Lucy
    Growing up for My Future💕
    The Engineer, Lucy
    • Instagram
    • GitHub
  • 전체
    오늘
    어제
    • 분류 전체보기 (180)
      • Linux (26)
      • Infra (9)
      • Cloud (25)
        • AWS (2)
        • GCP (3)
        • Docker (4)
        • Kubernetes (14)
        • IaC (2)
      • NGINX (1)
      • DevOps (3)
      • Computer Science (17)
        • Data Structure (0)
        • Algorithms (1)
        • Operating System (3)
        • Network (11)
        • Database System (2)
      • Coding Test (93)
        • Algorithms (85)
        • SQL (7)
      • ETC (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 공지사항

  • 링크

    • Lucy's Instagram
    • Lucy's GitHub
  • 인기 글

  • 태그

    쉘 스크립트
    네트워크 기초 지식
    network
    cs 기초 지식 정리
    다이나믹 프로그래밍
    백준
    너비우선탐색
    docker
    Java
    K8s
    리눅스
    자바
    Baekjoon
    bfs
    Shell Script
    리눅스마스터 2급
    코딩테스트 공부
    네트워크
    쿠버네티스
    dfs
    Kubernetes
    오블완
    programmers
    Linux
    프로그래머스
    terraform
    티스토리챌린지
    도커
    Shell
    셸 스크립트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
The Engineer, Lucy
[Linux] Shell Script을 활용하여 SSH 키 복사
상단으로

티스토리툴바