기본 시스템 설정
먼저
rocky1, rocky2를 vmware의 rocky linux로 생성한 상태
호스트명 변경
sudo hostnamectl set-hostname rocky2
호스트명 변경 후 시스템 재부팅:
shutdown -h now
Linux 환경변수 이해하기
.bashrc vs .bash_profile
파일 실행 시점 용도
| .bashrc | 새로운 쉘을 실행할 때마다 | 별칭(alias), 함수, 프롬프트 설정 |
| .bash_profile | 로그인할 때 한 번만 | 환경변수, PATH 설정 |
환경변수 확인 명령어
# 전체 환경변수 출력
env
# 모든 변수 출력 (지역변수 포함)
set
# 특정 환경변수 검색
env | grep 변수명
SSH 키 기반 인증 설정 (핵심)
SSH 키 인증이란?
SSH 키 인증은 비밀번호 대신 암호화 키 쌍을 사용하여 서버에 접속하는 보안 방식입니다.
장점:
- 비밀번호보다 훨씬 안전
- 자동 로그인 가능 (비밀번호 입력 불필요)
- 무차별 대입 공격(Brute Force) 방어
SSH 키의 구조
SSH 키 쌍
├─ id_rsa (개인키)
│ ├─ 위치: ~/.ssh/id_rsa
│ ├─ 권한: 600 (소유자만 읽기/쓰기)
│ └─ 절대 외부에 공개하면 안 됨!
│
└─ id_rsa.pub (공개키)
├─ 위치: ~/.ssh/id_rsa.pub
├─ 권한: 644
└─ 접속할 서버에 복사함
작동 원리
Rocky1 (클라이언트) Rocky2 (서버)
┌─────────────┐ ┌─────────────┐
│ id_rsa │ │authorized_ │
│ (개인키) | │keys │
└──────┬──────┘ └──────┬──────┘
│ │
│ 1. 접속 요청 │
├──────────────────────────────>│
│ │
│ 2. 암호화된 챌린지 │
│<──────────────────────────────┤
│ │
│ 3. 개인키로 해독 & 응답 │
├──────────────────────────────>│
│ │
│ 4. 인증 성공! 접속 허용 │
│<──────────────────────────────┤
SSH 키 생성 및 배포 실습
1단계: SSH 키 쌍 생성 (Rocky1에서)
ssh-keygen -t rsa -b 2048
옵션 설명:
- -t rsa: RSA 암호화 알고리즘 사용
- -b 2048: 키 길이 2048비트 (보안 수준)
실행 과정:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/admin/.ssh/id_rsa): [Enter]
Enter passphrase (empty for no passphrase): [Enter]
Enter same passphrase again: [Enter]
Tip: Passphrase를 설정하면 개인키 사용 시 추가 비밀번호를 요구하여 보안이 강화됩니다.
생성된 파일 확인:
ls -l ~/.ssh/
-rw------- 1 admin admin 1679 Jan 7 02:30 id_rsa
-rw-r--r-- 1 admin admin 394 Jan 7 02:30 id_rsa.pub
2단계: 공개키를 Rocky2에 복사
ssh-copy-id (admin)@(ip주소)
이 명령어가 하는 일:
- Rocky1의 id_rsa.pub 내용을 읽음
- Rocky2의 ~/.ssh/authorized_keys에 추가
- 적절한 권한 설정 (디렉토리 700, 파일 600)
실행 결과:
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s)
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed
admin@(ip)'s password: [비밀번호 입력]
Number of key(s) added: 1
Now try logging into the machine with: "ssh 'admin@(ip)'"
3단계: SSH 접속 테스트
ssh admin@(ip)
성공 시 결과:
Activate the web console with: systemctl enable --now cockpit.socket
Last login: Wed Jan 7 02:49:16 2026 from ip
[admin@rocky2 ~]$
비밀번호 입력 없이 바로 접속됨!
즉 rocky1 접속 상태에서 -> rocky2로 비밀번호 없이 접속가능하게 됨.
원격 접속 프로토콜 비교
Telnet vs SSH vs VNC
프로토콜 포트 암호화 용도 보안성
| Telnet | 23 | 없음 | 원격 터미널 | 매우 위험 |
| SSH | 22 | 강력 | 원격 터미널 | 안전 |
| VNC | 5900+ | 선택적 | 원격 데스크톱 | 추가 설정 필요 |
Telnet의 위험성
공격자가 네트워크를 모니터링하면...
Telnet 통신 (평문):
사용자명: admin
비밀번호: password123 그대로 보임!
SSH 통신 (암호화):
%$#@*&^%$#@*&^ 암호화되어 해독 불가
절대 사용하지 말아야 할 경우:
- 인터넷을 통한 원격 접속
- 중요한 서버 관리
- 비밀번호나 민감한 정보 전송
사용 가능한 경우:
- 로컬 네트워크에서 테스트 목적
- 네트워크 장비(스위치, 라우터) 설정 (대체 프로토콜 없을 때)
🔍 SSH 디렉토리 구조
~/.ssh/
├── id_rsa # 개인키 (600)
├── id_rsa.pub # 공개키 (644)
├── authorized_keys # 접속 허용할 공개키 목록 (600)
├── known_hosts # 접속했던 서버의 지문 (644)
└── config # SSH 클라이언트 설정 (600)
authorized_keys 내부 구조
cat ~/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ... admin@rocky1
│ │ │
│ └─ 공개키 내용 └─ 키 주석
└─ 암호화 알고리즘
🚀 추가 보안 강화 팁
1. SSH 설정 파일 수정
sudo vi /etc/ssh/sshd_config
권장 설정:
# 루트 직접 로그인 비활성화
PermitRootLogin no
# 비밀번호 인증 비활성화 (키 인증만 허용)
PasswordAuthentication no
# 빈 비밀번호 비활성화
PermitEmptyPasswords no
# 포트 변경 (선택사항)
Port 2222
설정 변경 후 SSH 서비스 재시작:
sudo systemctl restart sshd
2. SSH 접속 로그 확인
# 최근 로그인 기록
last
# SSH 인증 로그
sudo tail -f /var/log/secure
'리눅스' 카테고리의 다른 글
| [Linux: Nginx] 웹 서버 설정 및 HTML 페이지 만들기 (0) | 2026.01.13 |
|---|---|
| [Linux:수업 2주차] Rocky Linux 네트워크 및 기본 명령어 정리 (0) | 2026.01.13 |
| [Linux:수업 1주차] 리눅스 기본 명령어 가이드 (0) | 2026.01.07 |
| [VMware] Rocky Linux 9 SSH 비밀번호 없이 접속하기 & 웹 서버 구축 가이드 (0) | 2026.01.07 |
| Linux 원격 제어 및 기본 명령어(1) (0) | 2026.01.06 |