1 SSH Config 파일
1.1 필요성
Config 없이 매번 전체 옵션을 입력하는 것은 불편하고 실수하기 쉽다.
Config 파일로 접속 정보를 저장하면:
- 긴 명령어를 짧은 별칭으로 대체
- 여러 서버를 체계적으로 관리
- VS Code Remote SSH가 자동으로 인식
- 포트 포워딩, 프록시 설정 등 고급 옵션 적용 가능
1.2 파일 위치
| OS | 경로 |
|---|---|
| Linux/macOS | ~/.ssh/config |
| Windows | C:\Users\사용자명\.ssh\config |
파일이 없으면 새로 생성한다. 권한은 chmod 600으로 설정한다.
2 Config 파일 구조
2.1 기본 형식
| 항목 | 설명 |
|---|---|
Host |
접속 시 사용할 별칭 (임의 지정) |
HostName |
실제 IP 주소 또는 도메인 |
User |
서버 사용자 계정 |
Port |
SSH 포트 (기본값 22, 생략 가능) |
IdentityFile |
개인키 파일 경로 |
2.2 실전 예시
# ~/.ssh/config
# Azure 개발 VM
Host azure-dev
HostName 20.196.144.16
User azureuser
IdentityFile ~/.ssh/azure_vm_key
# AWS EC2 서버
Host aws-prod
HostName ec2-1-2-3-4.compute-1.amazonaws.com
User ec2-user
IdentityFile ~/.ssh/aws_key.pem
# 사내 서버 (비표준 포트)
Host office-server
HostName 192.168.10.50
User admin
IdentityFile ~/.ssh/office_key
Port 2222
# GitHub
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519사용:
3 고급 옵션
3.1 연결 유지 (Keep Alive)
네트워크 방화벽이 유휴 SSH 연결을 끊는 경우 keepalive 패킷을 전송하여 유지한다.
Host *은 모든 호스트에 적용되는 전역 설정이다.
3.2 와일드카드 매칭
3.3 연결 재사용 (ControlMaster)
같은 서버에 여러 SSH 세션을 열 때, 첫 번째 연결을 재사용하여 인증을 생략한다.
3.4 ssh-agent 자동 등록
3.5 Jump Server (ProxyJump)
내부 네트워크에 직접 접근이 불가능할 때, 중간 서버(Bastion Host)를 경유한다.
4 SCP: 파일 전송
SCP(Secure Copy Protocol)는 SSH를 통해 파일을 복사한다.
4.1 기본 문법
4.2 로컬 → 서버
4.3 서버 → 로컬
4.4 주요 옵션
| 옵션 | 설명 |
|---|---|
-r |
디렉터리 재귀 복사 |
-P |
포트 지정 (대문자 P) |
-i |
개인키 파일 지정 |
-C |
압축 전송 (대용량 파일) |
-p |
원본 파일의 권한/시간 보존 |
5 SFTP: 대화형 파일 전송
SFTP(SSH File Transfer Protocol)는 FTP와 유사한 대화형 파일 전송을 제공한다.
5.1 SFTP 명령어
6 rsync: 디렉터리 동기화
rsync는 SSH를 통해 변경된 파일만 전송하여 효율적으로 동기화한다. SCP보다 대량 파일 작업에 적합하다.
# 기본 동기화
rsync -avz -e ssh /local/data/ user@server:/remote/backup/
# 진행 상황 표시
rsync -avzP -e ssh /local/data/ user@server:/remote/backup/
# 삭제된 파일도 동기화 (원본에서 삭제된 파일을 대상에서도 삭제)
rsync -avz --delete -e ssh /local/data/ user@server:/remote/backup/
# 특정 패턴 제외
rsync -avz --exclude '*.log' --exclude '.git' -e ssh /local/ user@server:/remote/| 옵션 | 설명 |
|---|---|
-a |
아카이브 모드 (권한, 소유자, 시간 보존) |
-v |
상세 출력 |
-z |
압축 전송 |
-P |
진행 상황 표시 + 중단 시 이어받기 |
--delete |
대상에서 원본에 없는 파일 삭제 |
--exclude |
제외 패턴 |
7 원격 명령 실행
SSH로 서버에 접속하지 않고 단일 명령만 실행할 수 있다.
8 요약
| 작업 | 명령어 |
|---|---|
| Config로 접속 | ssh 별칭 |
| 파일 업로드 | scp file.txt 별칭:/path/ |
| 디렉터리 업로드 | scp -r dir/ 별칭:/path/ |
| 대화형 전송 | sftp 별칭 |
| 디렉터리 동기화 | rsync -avzP -e ssh dir/ 별칭:/path/ |
| 원격 명령 실행 | ssh 별칭 "명령" |
| Jump Server 접속 | ProxyJump bastion (config) |