SSH 무비밀번호 접속 개요

SSH(Key-Based Authentication)는 암호 대신 공개 키와 개인 키를 사용하여 서버에 안전하고 빠르게 접속할 수 있는 방식입니다.

이 방법은 보안을 강화하고, 자동화 스크립트나 다수의 서버 관리에 편리합니다.

 

SSH 키 생성 방법

로컬에서 키 생성 ssh-keygen 명령어를 사용해 공개 키와 개인 키를 생성합니다.

ssh-keygen -t rsa -b 4096

Generating public/private rsa key pair.
Enter file in which to save the key (/home//testuser1/.ssh/id_rsa): Enter

Created directory '/home//testuser1/.ssh'.
Enter passphrase (empty for no passphrase): Enter

Enter same passphrase again: Enter

# 완료시 출
Your identification has been saved in /home//testuser1/.ssh/id_rsa.
Your public key has been saved in /home//testuser1/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:vMt795zUR0jJItH93/7x8YVSYlILBfqKaf2UvbyttKo testuser1@alpha-001
The key's randomart image is:

 

authorized_keys 파일 설정 및 복사

# 공개키 등록
cat id_rsa.pub >> ~/.ssh/authorized_keys

# 권한 설정
chmod 600 ~/.ssh/authorized_keys

 

authorized_keys 원격서버로 복사

# 비밀번호를 인증하지 않고 접속할 서버의에 파일을 복사하기 위해 authorized_keys을 원격으로 전송 합니다.
scp ~/.ssh/authorized_keys user@remote_server:~/.ssh/authorized_keys

 

SSH 무비밀번호 접속 테스트

# ssh 명령어로 접속 시도
ssh [사용자]@[서버 IP]

# ssh 접속 실패 시 v 옵션을 사용하여 원인 파악
ssh -v [사용자]@[서버 IP]

 

SSH 무비밀번호 스크립

위 과정이 어려우실 경우 아래 스크립트를 복사하여 수정하여 사용하시면 됩니다.

#!/bin/bash

# 변수 설정
USER_NAME="$USER"          # 현재 사용 중인 사용자 이름
SERVER="remote_server"     # 원격 서버 주소
SSH_DIR="$HOME/.ssh"       # 로컬 SSH 디렉토리
KEY_NAME="id_rsa"          # 키 이름
AUTH_KEYS_FILE="$SSH_DIR/authorized_keys" # authorized_keys 파일 경로

# 1. SSH 키 생성
echo "SSH 키 생성 중..."
if [ ! -f "$SSH_DIR/$KEY_NAME" ]; then
    ssh-keygen -t rsa -b 4096 -f "$SSH_DIR/$KEY_NAME" -N ""
    echo "SSH 키 생성 완료: $SSH_DIR/$KEY_NAME"
else
    echo "SSH 키가 이미 존재합니다: $SSH_DIR/$KEY_NAME"
fi

# 2. 로컬 authorized_keys 파일 준비
echo "로컬에서 authorized_keys 생성 중..."
if [ ! -f "$AUTH_KEYS_FILE" ]; then
    cp "$SSH_DIR/$KEY_NAME.pub" "$AUTH_KEYS_FILE"
    echo "authorized_keys 파일 생성 완료: $AUTH_KEYS_FILE"
else
    echo "authorized_keys 파일이 이미 존재합니다."
fi

# 3. authorized_keys 파일을 원격 서버로 전송
echo "authorized_keys 파일을 원격 서버로 전송 중..."
ssh "$USER_NAME@$SERVER" "mkdir -p ~/.ssh && chmod 700 ~/.ssh"
scp "$AUTH_KEYS_FILE" "$USER_NAME@$SERVER:~/.ssh/authorized_keys"

# 4. 원격 서버에서 권한 설정
echo "원격 서버에서 권한 설정 중..."
ssh "$USER_NAME@$SERVER" <<EOF
    chmod 600 ~/.ssh/authorized_keys
EOF

echo "SSH 무비밀번호 접속 설정 완료!"