우분투 리눅스에서 SSH 포트 4022로 변경 및 키파일 만들고 키파일로 접속하기

2025. 3. 25. 17:37리눅스/서버 설정

반응형

 

 

✅ 1. 우분투 리눅스에서 SSH 포트 4022로 변경

 

1-1. SSH 설정 파일 열기

sudo nano /etc/ssh/sshd_config

또는

sudo vim /etc/ssh/sshd_config

 

1-2. 아래 내용 수정 또는 추가

Port 4022
기존에 Port 22가 있다면 #으로 주석 처리하거나 삭제



1-3. 방화벽에서 4022 포트 허용

sudo ufw allow 4022/tcp

 

1-4. SSH 서비스 재시작

sudo systemctl restart ssh

 

 

✅ 2. 맥북에서 .pem 키 생성 및 SSH 접속 준비

2-1. 키 생성 (맥북에서)

iterm 을 열거나 터미널을 오픈

ssh-keygen -t rsa -b 4096 -f mykey.pem

mykey.pem 이라는 파일이 생성됨. 개인키: mykey.pem, 공개키: mykey.pem.pub

2-2. 공개키를 우분투 서버에 등록

우분투에 일단 기존 방식으로 로그인 후 (포트 22든, 콘솔이든):

mkdir -p ~/.ssh
chmod 700 ~/.ssh
 
cat mykey.pem.pub >> ~/.ssh/authorized_keys 
chmod 600 ~/.ssh/authorized_keys

 

 

✅ 3. 맥북에서 .pem 키를 사용해 SSH 접속 (포트 4022)

 

3-1. .pem 키 권한 설정

chmod 400 mykey.pem

 

3-2. SSH 접속 명령어

ssh -i mykey.pem -p 4022 사용자명@서버주소

 

예시:

ssh -i mykey.pem -p 4022 ubuntu@123.123.123.123

 

 

✅ 참고
기본적으로  /etc/ssh/sshd_config에 PasswordAuthentication no 로 되어 있는 경우가 많음.

만약 비밀번호 로그인도 열어두고 싶다면 sshd_config에서 아래 항목 확인:

PasswordAuthentication yes

 

 

✅ 4. 공개키 자동 배포 스크립트 (맥북에서 실행)

 

이 스크립트는 다음을 자동으로 해줘:

- .pem 키 생성
- 우분투 서버에 로그인해서 .ssh/authorized_keys에 공개키 등록
- SSH 접속 테스트

#!/bin/bash

# ====== 설정값 ======
KEY_NAME="mykey.pem"
USER="ubuntu"                         # 서버 사용자 이름 (예: ubuntu, root 등)
HOST="123.123.123.123"                # 우분투 서버 IP 주소
PORT=4022                             # SSH 포트
# =====================

# 키가 이미 있으면 삭제
rm -f "$KEY_NAME" "$KEY_NAME.pub"

# 1. 키 생성
ssh-keygen -t rsa -b 4096 -f "$KEY_NAME" -N ""

# 2. 공개키 서버에 복사
echo "📡 서버에 공개키 복사 중..."
PUB_KEY=$(cat "$KEY_NAME.pub")
ssh -p $PORT $USER@$HOST "mkdir -p ~/.ssh && chmod 700 ~/.ssh && echo '$PUB_KEY' >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

# 3. 권한 설정
chmod 400 "$KEY_NAME"

# 4. 테스트 접속
echo "🚀 SSH 접속 테스트:"
ssh -i "$KEY_NAME" -p $PORT $USER@$HOST


✅ 사용 방법
chmod +x setup_ssh_key.sh
./setup_ssh_key.sh
위 스크립트 실행 후엔 자동으로 접속까지 확인해줘.

 


✅ 5. SSH 접속 자동화 alias 만들기 (선택)

 

자주 접속하는 경우 alias를 만들어두면 편해:

nano ~/.zshrc   # 또는 ~/.bashrc


다음 추가:

alias myserver="ssh -i ~/mykey.pem -p 4022 ubuntu@123.123.123.123"

 

변경 적용:

source ~/.zshrc

 

이제 터미널에서

myserver


만 입력하면 바로 접속이 가능 !!

 

 

 

✅ 여러 서버를 선택해서 접속하는 자동화 스크립트 예제

#!/bin/bash

# ===== 서버 리스트 =====
declare -A SERVERS

SERVERS["1"]="My Server A|ubuntu|123.123.123.123|4022|mykey.pem"
SERVERS["2"]="Test Server B|ec2-user|15.25.25.25|4022|aws-key.pem"
SERVERS["3"]="Internal Dev|admin|192.168.1.50|2222|devkey.pem"
# =======================

echo "🔐 SSH 접속할 서버를 선택하세요:"
for key in "${!SERVERS[@]}"; do
    NAME=$(echo "${SERVERS[$key]}" | cut -d'|' -f1)
    echo "$key) $NAME"
done

read -p "번호 입력: " selection
SERVER_INFO="${SERVERS[$selection]}"

if [ -z "$SERVER_INFO" ]; then
    echo "❌ 잘못된 선택입니다."
    exit 1
fi

# 정보 분리
NAME=$(echo "$SERVER_INFO" | cut -d'|' -f1)
USER=$(echo "$SERVER_INFO" | cut -d'|' -f2)
HOST=$(echo "$SERVER_INFO" | cut -d'|' -f3)
PORT=$(echo "$SERVER_INFO" | cut -d'|' -f4)
KEYFILE=$(echo "$SERVER_INFO" | cut -d'|' -f5)

# 접속
echo "🚀 $NAME 에 접속 중..."
chmod 400 "$KEYFILE" 2>/dev/null
ssh -i "$KEYFILE" -p "$PORT" "$USER@$HOST"

 

✅ 사용 방법

 

위 코드를 multi_ssh.sh 같은 이름으로 저장

실행 권한 부여:

chmod +x multi_ssh.sh

 

실행:

./multi_ssh.sh

 

원하는 서버 번호를 입력하면 .pem 키와 포트를 자동으로 인식해서 접속해줘.

 

✅ 보너스: .pem 키 파일 경로가 ~/keys 폴더일 경우
KEYFILE을 ~/keys/mykey.pem처럼 바꾸면 되고, 접속 전에 이 폴더에 키 파일을 미리 넣어두면 돼.

'리눅스 > 서버 설정' 카테고리의 다른 글

ssh 포트 변경  (0) 2024.08.21
python 스크립트 데몬으로 실행하기  (0) 2019.07.23
서버 설정  (0) 2019.07.21