지난 포스팅에서 ssh
명령어의 기본적인 사용법과 유용한 옵션들을 살펴보았습니다. 하지만 매번 복잡한 IP 주소, 사용자 이름, 포트 번호 등을 일일이 입력하는 것은 여간 번거로운 일이 아닙니다. 이럴 때 SSH Config 파일을 활용하면 이런 번거로움을 한 번에 해결할 수 있습니다. 마치 즐겨찾기처럼 자주 사용하는 서버 접속 정보를 저장해두고 별칭(Alias) 으로 손쉽게 접속할 수 있도록 도와주는 마법의 파일이죠.
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-prod
나aws-dev
로 접속하면User
와IdentityFile
설정이 자동으로 적용됩니다.HostName
은aws-prod
로 접속 시prod
가 됩니다 (나중에ssh aws-prod
명령어로 사용). -
10.0.0.*
:10.0.0.x
형태의 IP 주소에 접속할 때 자동으로admin
사용자 및 기본 22번 포트가 적용됩니다.
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 와 관련한 다양한 글을 보실 수 있습니다.
궁금한 점이 있다면 언제든지 댓글로 질문해주세요!
댓글이 없습니다.