Skip to main content

SSH Config 설정으로 원격 서버에 쉽게 접속하기

·516 words·3 mins
미뇽
Author
미뇽
안녕하세요! 기술로 세상을 이롭게 만들고 싶은 개발자 미뇽입니다.
Table of Contents

여러 대의 원격 서버를 관리하다 보면, 각 서버의 주소, 사용자 이름, 포트 번호, 그리고 사용하는 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해당 서버에 접속할 사용자 이름을 지정합니다.
PortSSH 접속 포트 번호를 지정합니다. (기본값은 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)
ServerAliveCountMaxServerAliveInterval 신호에 서버가 응답하지 않을 경우, 접속이 끊어지기 전까지 재시도할 횟수를 지정합니다. (예: ServerAliveCountMax 3)
ConnectTimeout서버 접속 시도 시, 응답을 기다리는 최대 시간(초)을 설정합니다.
ForwardAgent로컬 SSH Agent에 등록된 키를 원격 서버에서도 연속하여 사용할 수 있게 합니다. (예: 내 PC -> A서버 -> B서버로 키 전달)
StrictHostKeyChecking처음 접속하는 서버의 호스트 키를 ~/.ssh/known_hosts 파일에 자동으로 추가할지 여부를 결정합니다. no로 설정하면 확인 질문 없이 추가됩니다.

공식 매뉴얼(Manual) 확인 방법
#

config 파일에 사용할 수 있는 모든 옵션과 정확한 설명은 공식 매뉴얼을 통해 확인할 수 있습니다.

터미널에서 직접 확인
#

터미널에서 man ssh_config 명령어를 실행하면, config 파일에 대한 가장 정확하고 상세한 매뉴얼을 볼 수 있습니다. (탐색: 화살표 키, 검색: /검색어, 종료: q)

온라인 매뉴얼 페이지
#

웹 브라우저를 통해 공식 매뉴얼 페이지를 확인할 수도 있습니다.