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 무비밀번호 접속 설정 완료!"