SSH 사용법: Mac에서 Terminal로 안전하게 접속하기
개요
원격 접속이 필수인 시대에 SSH(Secure Shell)는 안전한 명령 실행과 파일 전송을 위한 표준 도구입니다. 이 문서는 Mac에서 Terminal을 통해 SSH를 시작하고, 키 기반 인증을 설정하며, 문제 해결과 보안 강화를 위한 권장 절차를 제공합니다.
중요 용어 한 줄 정의:
- SSH: 네트워크 상에서 암호화된 터널을 통해 원격 호스트에 접속하고 명령을 실행하거나 파일을 전송하는 프로토콜.
준비 사항
- Mac에서 Terminal 앱에 접근할 수 있어야 합니다.
- 원격 서버의 IP 주소 또는 도메인 이름과 해당 서버의 사용자 계정이 필요합니다.
- 서버에 대한 접근 권한(비밀번호 또는 공개키)이 있어야 합니다.
- macOS의 경우, 자신의 Mac에 다른 장치에서 접속하려면 시스템 환경설정 > 공유에서 원격 로그인(Remote Login)을 활성화하세요.
Important: 보안상 공용 Wi-Fi에서 민감한 작업을 할 때는 VPN 사용 또는 추가 인증을 권장합니다.
1. Terminal 열기
방법은 두 가지가 일반적입니다:
- Spotlight 이용: Command + Space를 눌러 Spotlight를 연 다음 Terminal을 검색하여 실행합니다.
- Finder 이용: 응용 프로그램 > 유틸리티 폴더의 Terminal 아이콘을 더블클릭합니다.
2. SSH 연결 시작하기
원격 서버의 IP 주소나 도메인, 그리고 사용자 이름을 준비합니다. Terminal에서 기본 SSH 명령은 다음과 같습니다:
ssh username@ip-address
예: ssh [email protected]
처음 연결 시 서버의 호스트 키 지문을 확인하라는 메시지가 나오면 yes를 입력해 계속합니다. 비밀번호를 묻는 경우 입력 중에는 표시되지 않으니 그대로 입력하고 Enter를 누르세요.
호스트 키 지문 확인은 중간자 공격 방지를 위한 기본 절차입니다. 지문이 바뀌었다면 서버 관리자에게 확인하세요.
SSH 키 기반 인증 설정 (권장)
비밀번호 대신 공개/개인 키 쌍을 사용하면 보안성과 편의성이 모두 높아집니다. macOS에서 가장 흔한 설정 방법은 다음과 같습니다.
- 로컬에서 키 쌍 생성:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
- 파일 위치는 기본값(~/.ssh/id_rsa)으로 두거나 별도 이름을 사용하세요.
- 공개키를 서버에 복사:
- macOS에서 편리한 방법:
pbcopy < ~/.ssh/id_rsa.pub
그런 다음 서버의 ~/.ssh/authorized_keys 파일에 붙여넣기 합니다(폴더와 파일의 퍼미션을 확인).
- 또는 scp로 전송:
scp ~/.ssh/id_rsa.pub username@ip-address:~/.ssh/temp_pubkey
ssh username@ip-address 'cat ~/.ssh/temp_pubkey >> ~/.ssh/authorized_keys && rm ~/.ssh/temp_pubkey'
- 로컬에서 접속 테스트:
ssh username@ip-address
비밀번호 없이 접속된다면 설정이 성공한 것입니다.
Note: authorized_keys 파일 권한은 600, .ssh 디렉터리 권한은 700으로 설정하세요.
3. 기본 원격 작업 명령들
접속 후 자주 쓰는 명령들:
- 디렉토리 이동: cd 디렉토리
- 목록 보기: ls -la
- 디렉토리 생성: mkdir 디렉토리
- 파일 삭제: rm 파일
- 복사: cp 소스 대상
- 이동/이름 변경: mv 소스 대상
파일 작업은 항상 권한과 소유자를 확인하세요. sudo가 필요한 경우 로컬과 원격에서 다르게 동작합니다.
4. SSH 세션 종료하는 방법
- exit 입력 후 Enter
- 또는 키보드 단축키 Ctrl + D
5. 파일 전송: scp와 sftp
- 로컬에서 서버로 업로드:
scp /path/to/localfile username@ip-address:/remote/path/
- 서버에서 로컬로 다운로드:
scp username@ip-address:/remote/path/file /local/path/
- sftp를 통한 상호작용적 전송:
sftp username@ip-address
sftp> put localfile
sftp> get remotefile
scp는 단발성 전송, sftp는 대화형 전송과 디렉터리 탐색에 유리합니다.
6. 포트 포워딩과 에이전트 전달
- 로컬 포트 포워딩(예: 로컬 8080을 원격 호스트의 80으로 연결):
ssh -L 8080:localhost:80 username@ip-address
- 리모트 포트 포워딩(원격에서 로컬로 포트 개방):
ssh -R 9090:localhost:3000 username@ip-address
- SSH 에이전트 전달(원격에서 로컬 키 사용):
ssh -A username@ip-address
포워딩은 개발 환경에서 로컬 서비스를 안전하게 노출하거나, 내부 리소스를 우회하여 접근할 때 유용합니다. 보안 위험성을 이해하고 필요한 경우에만 사용하세요.
7. SSH 설정 파일 사용하기 (~/.ssh/config)
자주 사용하는 호스트는 ~/.ssh/config에 별칭과 옵션을 저장하면 편리합니다. 예시:
Host myserver
HostName 203.0.113.45
User alice
Port 2222
IdentityFile ~/.ssh/id_rsa_myserver
ForwardAgent yes
이제 ssh myserver 만으로 접속할 수 있습니다.
8. 보안 강화 권장 사항
- 기본 포트(22) 대신 다른 포트를 사용해 무차별 대입 공격을 줄이세요.
- 비밀번호 인증을 막고 공개키 인증만 허용하세요(Change PasswordAuthentication no in sshd_config).
- 루트 직접 로그인 비허용(PermitRootLogin no).
- SSH 키는 2048비트 이상(RSA) 또는 ED25519를 권장합니다.
- authorized_keys와 .ssh 디렉터리 퍼미션을 엄격히 관리하세요.
- 서버와 클라이언트 소프트웨어를 주기적으로 업데이트하세요.
- 로그인 시도가 많은 서버는 fail2ban 같은 도구를 사용해 차단 정책을 적용하세요.
중요: 설정을 변경하기 전에 기존 연결을 유지하는 세션에서 먼저 테스트하여 잠금(lockout)을 방지하세요.
9. 문제 해결 가이드
- Permission denied: public key가 올바르게 설치되었는지, 파일 권한이 적절한지 확인하세요.
- Host key verification failed: 서버의 호스트 키가 변경되었음을 의미합니다. 서버 관리자에게 확인하세요.
- Connection refused: 방화벽, 포트 번호, sshd 서비스 상태를 확인하세요.
- No route to host: 네트워크 연결 또는 IP 주소를 확인하세요.
간단 체크 명령:
ssh -v username@ip-address # 상세 디버그 출력
nc -vz ip-address port # 포트 연결 확인 (nc가 설치된 경우)
ping ip-address
10. 운영자용 빠른 점검 플레이북
- 로컬: ssh-keygen으로 키 생성
- 로컬: 공개키를 안전하게 서버의 ~/.ssh/authorized_keys에 추가
- 서버: sshd_config에서 PermitRootLogin no, PasswordAuthentication no 설정(테스트 후 적용)
- 서버 방화벽에서 SSH 포트 허용
- 서비스 재시작 및 로그 확인: sudo systemctl restart sshd && sudo journalctl -u sshd –since “5 minutes ago”
- 모니터링 및 차단 규칙 설정(fail2ban 등)
역할별 체크리스트
개발자
- SSH 키 생성 및 안전한 백업
- ~/.ssh/config에 자주 쓰는 호스트 설정
- 포트 포워딩으로 원격 DB에 안전하게 접속
시스템 관리자
- 공개키 기반 인증만 허용하고 로그 감시 설정
- 서버의 sshd 보안 설정과 패치 관리
- 접근 제어(방화벽, IP 화이트리스트)
초보자
- Terminal 사용법 숙지
- 비밀번호 대신 키 기반 인증 전환 연습
- scp로 파일 전송 실습
작동 흐름(간단 플로우)
graph TD
A[Terminal 열기] --> B{키 사용 여부}
B -->|키 있음| C[ssh username@host]
B -->|키 없음| D[ssh username@host -> 비밀번호 입력]
C --> E[명령 실행 / 파일 전송]
D --> E
E --> F[exit 또는 Ctrl+D]
사실 상자 — 핵심 숫자
- 기본 SSH 포트: 22
- 권장 키 길이: RSA 2048 이상, 권장 ED25519 사용 가능
- 홈 디렉터리의 SSH 퍼미션: ~/.ssh 700, ~/.ssh/authorized_keys 600
자주 묻는 질문
내 Mac에 다른 장치에서 SSH로 접속할 수 있나요?
네. 시스템 환경설정 > 공유에서 원격 로그인(Remote Login)을 활성화하면 가능합니다. 그 후 다른 장치에서 ssh username@mac-ip로 접속하세요.
내 Mac의 IP 주소는 어떻게 찾나요?
시스템 환경설정 > 네트워크에서 활성화된 네트워크(Wi-Fi 또는 Ethernet)를 선택하면 IP 주소를 확인할 수 있습니다. Terminal에서는 ifconfig 명령으로도 확인할 수 있습니다.
비밀번호 없이 SSH를 사용할 수 있나요?
네. SSH 키 기반 인증을 설정하면 비밀번호 입력 없이 접속할 수 있습니다. 로컬에서 키 쌍을 생성한 뒤 공개키를 서버의 ~/.ssh/authorized_keys에 추가하세요.
SSH는 안전한가요?
네. SSH는 전송 암호화를 제공해 데이터 기밀성과 무결성을 보장합니다. 다만 클라이언트와 서버를 최신 상태로 유지하고 강력한 인증 방법을 사용해야 안전합니다.
SSH로 파일을 전송할 수 있나요?
네. scp 또는 sftp를 사용해 로컬과 원격 간 파일을 안전하게 전송할 수 있습니다.
결론
SSH는 원격 시스템 관리와 파일 전송을 위한 핵심 도구입니다. 이 가이드를 따라 Terminal에서 기본 접속부터 키 기반 인증, 포트 포워딩, 보안 강화까지 단계적으로 적용하면 안전하고 효율적인 원격 작업 환경을 구축할 수 있습니다.
요약: Terminal을 열고 ssh 명령으로 접속을 시작한 뒤, 가능한 한 빨리 키 기반 인증으로 전환하세요. 보안을 강화하고 문제가 발생하면 ssh -v로 디버그 출력을 확인해 문제를 진단하세요.