지난 포스팅에서 ssh 명령어의 기본적인 사용법과 유용한 옵션들을 살펴보았습니다. 하지만 매번 복잡한 IP 주소, 사용자 이름, 포트 번호 등을 일일이 입력하는 것은 여간 번거로운 일이 아닙니다. 이럴 때 SSH Config 파일을 활용하면 이런 번거로움을 한 번에 해결할 수 있습니다. 마치 즐겨찾기처럼 자주 사용하는 서버 접속 정보를 저장해두고 별칭(Alias) 으로 손쉽게 접속할 수 있도록 도와주는 마법의 파일이죠.

SSH config를 즐겨찾기처럼 사용하는 개발자 일러스트


SSH Config 파일은 무엇인가요?

SSH Config 파일은 SSH 클라이언트의 동작 방식을 사용자 정의하는 설정 파일입니다. 이 파일에 특정 호스트에 대한 접속 정보(사용자 이름, 포트, 사용할 키 파일 등)를 미리 저장해두면, 나중에 접속할 때 짧은 별칭만으로 접속이 가능해집니다.

  • 위치: 일반적으로 사용자 홈 디렉토리의 .ssh 폴더 안에 config라는 이름으로 존재합니다.
    • 예시: ~/.ssh/config
  • 파일 생성: 만약 ~/.ssh/config 파일이 없다면, 직접 생성해 주면 됩니다.

    bash touch ~/.ssh/config chmod 600 ~/.ssh/config # 보안을 위해 읽기/쓰기 권한을 소유자에게만 부여


Config 파일 작성 규칙

Config 파일은 간단한 텍스트 파일이며, 각 호스트에 대한 설정은 Host 키워드로 시작하여 블록 형태로 작성됩니다.

기본 구조

Host [별칭]
    [옵션1] [값1]
    [옵션2] [값2]
    ...
  • Host [별칭]: 이 블록의 시작을 알리고, 여러분이 사용할 별칭(Alias) 을 정의합니다. 이 별칭을 SSH 명령어에 사용하게 됩니다. 별칭 대신 실제 호스트 주소(IP 또는 도메인)를 직접 넣을 수도 있습니다. 와일드카드 문자(*, ?)도 사용할 수 있습니다.

  • 들여쓰기: Host 아래의 옵션들은 들여쓰기를 해야 합니다. 공백이나 탭을 사용해도 되지만, 일관성을 유지하는 것이 좋습니다.

  • 옵션: Host 아래에는 해당 별칭으로 접속할 때 적용될 다양한 SSH 옵션들을 나열합니다. 이 옵션들은 이전에 ssh -옵션 형태로 사용했던 것들과 동일합니다.

자주 사용되는 옵션들

옵션 설명 예시 값
HostName 실제 접속할 서버의 IP 주소 또는 도메인 이름 192.168.1.100 또는 example.com
User 원격 서버에 접속할 사용자 계정 이름 ubuntu, ec2-user, root
Port 원격 서버의 SSH 포트 번호 (기본값 22) 2222
IdentityFile 접속 시 사용할 비공개 키 파일의 경로 ~/.ssh/id_ed25519_myserver
ForwardAgent SSH 에이전트 포워딩 활성화 (Agent Forwarding, ssh-agent 사용 시) yes
StrictHostKeyChecking 호스트 키 검사를 엄격하게 할지 여부 (yes 권장) no (초기 테스트 시 임시로 사용)
PortForwarding 포트 포워딩 허용 여부 yes
LocalForward 로컬 포트 포워딩 설정 (-L 옵션과 동일) 8080 localhost:80
ServerAliveInterval 서버가 살아있는지 확인하는 인터벌 (초 단위) 60 (연결 끊김 방지)
ServerAliveCountMax 서버 확인 실패 시 연결을 끊기 전 재시도 횟수 3

SSH Config 파일 작성 예시

자주 접속하는 몇 가지 서버에 대한 설정을 ~/.ssh/config 파일에 추가해 봅시다.

# 첫 번째 서버: 웹 서버 (별칭: webserver)
Host webserver
    HostName 192.168.1.100
    User ubuntu
    Port 2222
    IdentityFile ~/.ssh/id_ed25519_webserver # 웹 서버 전용 키 사용

# 두 번째 서버: 개발 서버 (별칭: devbox)
Host devbox
    HostName dev.example.com
    User developer
    IdentityFile ~/.ssh/id_rsa_dev # RSA 키 사용
    # 이 서버에 접속할 때 로컬 8000포트를 원격 서버의 80포트로 포워딩
    LocalForward 8000 localhost:80 

# 세 번째 서버: 모든 AWS EC2 서버 (별칭: aws-*)
Host aws-*
    User ec2-user
    IdentityFile ~/.ssh/aws_ec2_key.pem
    # 연결이 끊어지지 않도록 주기적으로 신호를 보냄
    ServerAliveInterval 60
    ServerAliveCountMax 3

# 특정 IP 대역에 대한 일반 설정 (별칭: 10.0.0.*)
Host 10.0.0.*
    User admin
    Port 22

설명:

  • webserver: 192.168.1.100 서버에 ubuntu 사용자로 2222번 포트와 id_ed25519_webserver 키를 사용하여 접속할 수 있게 됩니다.

  • devbox: dev.example.com 서버에 developer 사용자로 id_rsa_dev 키를 사용하여 접속하며, 로컬 8000번 포트를 원격 80번 포트로 포워딩합니다.

  • aws-*: aws-로 시작하는 모든 별칭에 적용되는 설정입니다. 예를 들어 aws-prodaws-dev로 접속하면 UserIdentityFile 설정이 자동으로 적용됩니다. HostNameaws-prod로 접속 시 prod가 됩니다 (나중에 ssh aws-prod 명령어로 사용).

  • 10.0.0.*: 10.0.0.x 형태의 IP 주소에 접속할 때 자동으로 admin 사용자 및 기본 22번 포트가 적용됩니다.


SSH 접속 버튼을 누르자 네트워크로 퍼지는 마법 같은 이미지

Config 파일 사용 방법

이제 Config 파일에 설정을 저장했다면, 실제 접속은 훨씬 간단해집니다. 위 예시를 바탕으로 해볼까요?

1. 별칭으로 접속하기

별칭만 사용하여 SSH 접속 명령어를 실행합니다.

  • webserver 별칭 사용:
    ssh webserver
    Enter passphrase for key '/home/youruser/.ssh/id_ed25519_webserver':
    ubuntu@webserver-ip:~ $
이 명령어는 내부적으로 `ssh -p 2222 -i ~/.ssh/id_ed25519_webserver ubuntu@192.168.1.100`과 동일하게 동작합니다.
  • devbox 별칭 사용:
    ssh devbox
    Enter passphrase for key '/home/youruser/.ssh/id_rsa_dev':
    developer@devbox-domain:~ $
(동시에 로컬 8000번 포트로 접속하면 dev.example.com의 80번 포트로 연결됨)
  • aws-prod (와일드카드 별칭) 사용:
    ssh aws-prod
    Enter passphrase for key '/home/youruser/.ssh/aws_ec2_key.pem':
    ec2-user@aws-prod-hostname:~ $

주의: aws-prod처럼 호스트 이름을 별도로 지정하지 않은 와일드카드 Host의 경우, HostName 옵션을 명시적으로 지정해 주거나, 명령줄에서 호스트 이름을 제공해야 할 수 있습니다. 위 aws-* 예시에서는 HostName을 지정하지 않았으므로, 실제로 ssh aws-prod를 실행하면 SSH 클라이언트가 prod를 호스트 이름으로 해석하려 할 것입니다. 좀 더 명확하게 사용하려면 Host prod-server와 같이 별칭과 HostName prod.example.com을 매핑하는 것이 일반적입니다.


Config 파일 사용의 장점

  • 편의성: 길고 복잡한 SSH 명령어를 짧은 별칭으로 대체하여 입력 오류를 줄이고 시간을 절약할 수 있습니다.
  • 생산성: 자주 접속하는 서버를 빠르게 오갈 수 있어 작업 효율이 높아집니다.
  • 관리 용이성: 모든 접속 관련 설정을 한곳에서 관리할 수 있어 유지보수가 용이합니다. 예를 들어, 서버의 IP 주소가 변경되더라도 Config 파일만 수정하면 됩니다.
  • 보안: 중요한 정보(예: 키 파일 경로)를 명령어 히스토리에 남기지 않아도 됩니다.

마치며

SSH Config 파일은 SSH를 사용하는 모든 개발자와 시스템 관리자에게 필수적인 도구입니다. 이 파일을 활용하여 여러분의 SSH 접속 경험을 훨씬 더 편리하고 효율적으로 만들 수 있습니다. ~/.ssh/config 파일을 열고 여러분만의 별칭을 만들어 보세요!

SSH 와 관련된 다른 포스팅도 함께 읽어보세요! 오른쪽 검색창에서 ' ssh' 를 검색하시면 ssh 와 관련한 다양한 글을 보실 수 있습니다.

궁금한 점이 있다면 언제든지 댓글로 질문해주세요!