여러 대의 원격 서버를 관리하다 보면, 각 서버의 주소, 사용자 이름, 포트 번호, 그리고 사용하는 SSH 키가 달라 접속할 때마다 긴 명령어를 반복적으로 입력해야 하는 번거로움이 있습니다.
오늘은 이러한 불편함을 해결하고 SSH 접속 관리를 획기적으로 개선해 주는 SSH config
파일 설정 및 활용법에 대해 상세히 알아보고자 합니다. 이 가이드를 통해 ssh my-server
와 같은 간단한 별명만으로 어떤 서버든 신속하고 정확하게 접속하는 방법을 익히실 수 있습니다.
SSH config
파일이란?#
SSH config
파일은 각 원격 서버에 접속하는 데 필요한 정보들(서버 주소, 사용자 이름, 포트, SSH 키 경로 등)을 미리 정의해두는 사용자별 SSH 클라이언트 설정 파일입니다. 이 파일을 사용하면 길고 복잡한 접속 명령어를 기억하기 쉬운 별명(Alias) 으로 대체하여 생산성을 크게 높일 수 있습니다.
config
파일의 위치#
config
파일은 보통 SSH 키가 저장되는 사용자의 홈 디렉토리 내 .ssh
폴더에 위치합니다.
macOS/Linux:
~/.ssh/config
Windows:
C:\Users\사용자이름\.ssh\config
만약 .ssh
폴더 내에 config
파일이 없다면, 직접 파일을 생성하여 사용할 수 있습니다.
기본 구조와 주요 설정 옵션#
config
파일은 하나 이상의 Host
블록으로 구성됩니다. 각 Host
블록은 특정 서버 접속을 위한 설정 묶음이며, 다음과 같은 기본 구조를 가집니다.
Host [접속 시 사용할 별명]
HostName [서버의 실제 주소]
User [접속할 사용자 이름]
[기타 필요한 옵션]
아래는 config
파일에서 가장 자주 사용되는 핵심 옵션들입니다.
옵션 | 설명 |
---|---|
Host | 접속 시 사용할 고유한 별명을 지정합니다. (필수) |
HostName | 접속할 서버의 실제 IP 주소 또는 도메인 이름을 지정합니다. |
User | 해당 서버에 접속할 사용자 이름을 지정합니다. |
Port | SSH 접속 포트 번호를 지정합니다. (기본값은 22) |
IdentityFile | 해당 서버 접속에 사용할 개인키(Private Key)의 절대 경로를 지정합니다. |
사용 예시#
~/.ssh/config
파일에 아래와 같이 두 개의 서버 정보를 설정했다고 가정해 보겠습니다.
# 개인 개발 서버 (주석은 '#'으로 시작합니다)
Host dev-server
HostName 192.168.1.100
User ubuntu
Port 2222
IdentityFile ~/.ssh/id_ed25519_dev
# 회사 GitLab 서버
Host gitlab
HostName gitlab.mycompany.com
User git
IdentityFile ~/.ssh/id_rsa_work
이제 터미널에서 아래와 같이 간단한 명령어로 각 서버에 접속할 수 있습니다.
# dev-server 별명으로 개인 개발 서버에 접속
ssh dev-server
# 위 명령어는 내부적으로 아래의 긴 명령어를 실행한 것과 동일합니다.
# ssh -p 2222 -i ~/.ssh/id_ed25519_dev ubuntu@192.168.1.100
# gitlab 별명으로 회사 GitLab 서버에 접속
ssh gitlab
# 위 명령어는 내부적으로 아래의 명령어를 실행한 것과 동일합니다.
# ssh -i ~/.ssh/id_rsa_work git@gitlab.mycompany.com
알아두면 유용한 추가 옵션#
기본 옵션 외에도 SSH 접속 환경을 더욱 세밀하게 제어할 수 있는 유용한 옵션들이 있습니다.
옵션 | 설명 |
---|---|
ServerAliveInterval | 지정된 시간(초)마다 서버에 신호를 보내 세션을 유지합니다. 방화벽 등에 의해 연결이 끊기는 것을 방지합니다. (예: ServerAliveInterval 60 ) |
ServerAliveCountMax | ServerAliveInterval 신호에 서버가 응답하지 않을 경우, 접속이 끊어지기 전까지 재시도할 횟수를 지정합니다. (예: ServerAliveCountMax 3 ) |
ConnectTimeout | 서버 접속 시도 시, 응답을 기다리는 최대 시간(초)을 설정합니다. |
ForwardAgent | 로컬 SSH Agent에 등록된 키를 원격 서버에서도 연속하여 사용할 수 있게 합니다. (예: 내 PC -> A서버 -> B서버로 키 전달) |
StrictHostKeyChecking | 처음 접속하는 서버의 호스트 키를 ~/.ssh/known_hosts 파일에 자동으로 추가할지 여부를 결정합니다. no 로 설정하면 확인 질문 없이 추가됩니다. |
공식 매뉴얼(Manual) 확인 방법#
config
파일에 사용할 수 있는 모든 옵션과 정확한 설명은 공식 매뉴얼을 통해 확인할 수 있습니다.
터미널에서 직접 확인#
터미널에서 man ssh_config 명령어를 실행하면, config 파일에 대한 가장 정확하고 상세한 매뉴얼을 볼 수 있습니다. (탐색: 화살표 키, 검색: /검색어, 종료: q)
온라인 매뉴얼 페이지#
웹 브라우저를 통해 공식 매뉴얼 페이지를 확인할 수도 있습니다.
OpenBSD Manual (가장 공식적): https://man.openbsd.org/ssh_config
Linux Man Page: https://man7.org/linux/man-pages/man5/ssh_config.5.html