SSH (Secure Shell)
암호화된 네트워크 프로토콜. 원격 서버에 안전하게 접속하고 명령을 실행한다. 포트 22.
접속
ssh user@host
ssh user@host -p 2222 # 포트 지정
ssh -i ~/.ssh/key.pem user@host # 키 파일 지정
ssh -v user@host # 디버그 출력키 기반 인증
비밀번호 대신 공개키/개인키 쌍으로 인증. 더 안전하고 편리하다.
# 키 쌍 생성
ssh-keygen -t ed25519 -C "comment"
ssh-keygen -t rsa -b 4096
# 공개키를 서버에 등록
ssh-copy-id user@host
# 수동 등록: ~/.ssh/authorized_keys에 공개키 추가
# 파일 구조
~/.ssh/
├── id_ed25519 # 개인키 (절대 공유 X)
├── id_ed25519.pub # 공개키 (서버에 등록)
├── authorized_keys # 접속 허용할 공개키 목록
├── known_hosts # 접속한 서버 fingerprint
└── config # 접속 설정~/.ssh/config
반복되는 옵션을 저장해 간단하게 접속.
Host myserver
HostName 192.168.1.100
User ubuntu
Port 22
IdentityFile ~/.ssh/id_ed25519
Host prod
HostName prod.example.com
User ec2-user
IdentityFile ~/.ssh/prod-key.pem
ssh myserver # config 적용
ssh prod파일 전송
# 로컬 → 원격
scp file.txt user@host:/path/
scp -r dir/ user@host:/path/
# 원격 → 로컬
scp user@host:/path/file.txt ./
# rsync (대용량, 증분 동기화)
rsync -avz ./local/ user@host:/remote/
rsync -avz --delete ./local/ user@host:/remote/ # 원격 파일도 동기화포트 포워딩 (터널링)
# 로컬 포워딩: 로컬 포트 → 원격 서버를 통해 접근
ssh -L 8080:localhost:80 user@host
# localhost:8080 접속 시 host의 80포트로 연결
# 원격 포워딩: 원격 포트 → 로컬로 연결
ssh -R 9090:localhost:3000 user@host
# SOCKS 프록시
ssh -D 1080 user@host서버 설정 (/etc/ssh/sshd_config)
Port 22
PermitRootLogin no # root 직접 로그인 금지
PasswordAuthentication no # 비밀번호 인증 비활성화
PubkeyAuthentication yes # 키 인증 활성화
AllowUsers ubuntu deploy # 허용 사용자
# 설정 적용
sudo systemctl restart sshd