اپ ڈیٹ ہوا 1 مہینہ پہلے
SSH 설정 파일은 반복을 없애줍니다. 배포할 때마다 ssh -p 2222 -i ~/.ssh/id_ed25519_production deploy@prod.example.com을 입력하는 대신, ssh prod만 입력하면 됩니다. 입력하지 않아도 되는 문자 하나하나가 줄어드는 번거로움입니다.
사용자 이름, 키, 포트가 각각 다른 여러 서버에 접속한다면, 설정 파일 하나로 SSH 접속이 한결 수월해집니다.
SSH 설정 파일이란?
SSH 설정 파일은 ~/.ssh/config에 위치한 일반 텍스트 파일로, 연결 설정을 정의합니다. 서버마다 호스트명, 사용자 이름, 포트, 키를 한 번 기술해두면, 이후에는 짧은 별칭으로 참조할 수 있습니다.
SSH 클라이언트 명령어(ssh, scp, sftp)는 모두 이 파일을 읽으므로, 단축키는 어디서나 동작합니다.
파일이 없다면 직접 만드세요:
권한 설정이 중요합니다. 다른 사람이 파일을 읽을 수 있으면 SSH는 설정 파일을 무시합니다.
기본 구조
설정 파일은 Host 섹션과 그 아래에 들여쓰기된 옵션으로 구성됩니다:
이제 ssh prod가 ssh -p 2222 -i ~/.ssh/id_ed25519_production deploy@prod.example.com을 대신합니다.
Host 줄은 패턴을 정의합니다. ssh prod를 입력하면 SSH는 설정 파일에서 일치하는 Host 섹션을 찾아 해당 설정을 적용합니다.
실용적인 예시
간단한 서버 단축키:
ssh web은 admin으로 webserver.example.com에 접속합니다.
특정 키 사용:
여러 키가 있을 때, 신경 쓰지 않아도 올바른 키가 자동으로 사용됩니다.
비표준 포트:
-p 2222를 더 이상 잊어버릴 일이 없습니다.
점프 호스트 설정:
ssh internal을 실행하면 SSH가 먼저 bastion에 접속한 후, 그곳에서 내부 서버로 이동합니다. 두 단계의 연결을 SSH가 알아서 처리합니다. 목적지만 말하면 됩니다.
패턴과 와일드카드
Host 지시자는 여러 서버에 설정을 적용하기 위한 패턴을 지원합니다.
와일드카드:
업무 서버에는 업무 인증 정보가, 개인 서버에는 개인 인증 정보가 자동으로 적용됩니다.
여러 패턴:
"web" 또는 "db"로 시작하는 모든 별칭에 적용됩니다.
모든 호스트에 대한 기본 설정:
Host *는 모든 것과 일치합니다. 여기에 설정한 값은 더 구체적인 섹션이 재정의하지 않는 한 모든 연결에 적용됩니다. 구체적인 호스트는 일반적인 패턴보다 앞에 와야 합니다—SSH는 첫 번째 일치를 사용합니다.
유용한 설정 옵션
연결 유지:
60초마다 연결 유지 신호를 보냅니다. 세 번 실패하면 연결이 끊어진 것으로 간주합니다. 갑자기 먹통이 되는 터미널을 방지합니다.
연결 다중화:
서버에 처음 연결하면 마스터 연결이 생성됩니다. 이후 연결은 이를 재사용하여 거의 즉각적으로 접속됩니다. ControlPersist는 마지막 세션이 종료된 후 10분 동안 마스터 연결을 유지합니다.
소켓 디렉터리를 먼저 만드세요: mkdir -p ~/.ssh/sockets
압축:
느린 연결이나 텍스트를 대량으로 전송할 때 도움이 됩니다.
에이전트 포워딩:
원격 서버가 추가 연결을 위해 로컬 SSH 키를 사용할 수 있게 합니다. 완전히 신뢰하는 서버에만 활성화하세요—강력하지만 보안에 위험이 따릅니다.
호스트 키 확인 비활성화 (개발 환경 전용):
호스트 키 검증을 건너뜁니다. 자주 재생성하는 임시 가상 머신에만 사용하세요. 운영 환경에서는 절대 사용하지 마세요.
IPv4 강제 사용:
IPv6 문제가 있는 서버나 네트워크에 사용합니다.
연결 타임아웃:
무한정 기다리는 대신 10초 후에 포기합니다.
Match를 이용한 동적 설정
Match 지시자는 호스트명 일치 이상의 조건을 지원합니다.
사용자별 일치:
호스트명과 사용자 조합 일치:
admin으로 접속할 때 내부 서버에만 점프 호스트를 사용합니다.
설정 파일 정리하기
주석 사용:
주석은 #으로 시작합니다. 미래의 나 자신이 현재의 나에게 고마워할 것입니다.
설정 파일 분리:
그런 다음 ~/.ssh/config.d/work.conf, ~/.ssh/config.d/personal.conf 등을 만드세요.
주의할 점
순서가 중요합니다. SSH는 첫 번째로 일치하는 설정을 사용합니다:
권한이 올바라야 합니다:
-G 옵션으로 디버그:
실제로 접속하지 않고도 SSH가 사용할 최종 설정을 보여줍니다. 디버깅할 때 정말 유용합니다.
보안 고려사항
- 설정 파일에 비밀번호를 저장하지 마세요. 의도적으로 해당 옵션 자체가 없습니다.
ForwardAgent는 완전히 신뢰하는 서버에만 활성화하세요.- 운영 서버에서는
StrictHostKeyChecking을 비활성화하지 마세요. - 설정 파일을 보호하세요—서버 이름, 사용자 이름, 연결 패턴이 노출됩니다.
- 의도하지 않은 곳에 설정이 적용될 수 있는 광범위한 패턴에 주의하세요.
고급 팁
Git 호스트별 다른 키 사용:
업무용과 개인용 GitHub 계정이 모두 있을 때 필수입니다.
SOCKS를 통한 프록시:
접속 시 로컬 명령어 실행:
핵심 요약
- SSH 설정 파일(
~/.ssh/config)은 긴 명령어를 짧은 별칭으로 바꿔줍니다. Host섹션은 각 서버에 대한 호스트명, 사용자 이름, 포트, 키를 정의합니다.- 와일드카드(
Host *.example.com또는Host *)를 이용해 여러 서버에 설정을 적용합니다. 구체적인 호스트는 일반 패턴보다 앞에 와야 합니다. - 연결 다중화(
ControlMaster,ControlPath,ControlPersist)를 사용하면 이후 연결이 거의 즉각적으로 이루어집니다. - 연결 유지 설정(
ServerAliveInterval)은 유휴 시간 초과를 방지합니다. ProxyJump는 점프 호스트를 투명하게 처리합니다.- 권한 설정에는
chmod 600을, 디버깅에는ssh -G hostname을 사용하세요.
SSH 설정에 관한 자주 묻는 질문
SSH 설정 파일은 어디에 있나요?
Linux와 macOS: ~/.ssh/config. OpenSSH가 설치된 Windows: C:\Users\YourUsername\.ssh\config. 파일이 없으면 직접 만드세요.
SSH가 설정 파일을 읽지 않는 이유는 무엇인가요?
대부분 권한 문제입니다. chmod 600 ~/.ssh/config로 수정하세요. SSH는 다른 사람이 읽을 수 있는 설정 파일을 무시합니다.
GitHub 계정마다 다른 SSH 키를 사용하려면 어떻게 하나요?
같은 도메인이더라도 각 계정마다 별도의 Host 항목을 추가하세요. git 리모트에 사용자 지정 호스트명을 사용하세요:
그런 다음 git clone git@github-personal:user/repo.git으로 클론하세요.
SSH 설정 파일을 팀과 공유할 수 있나요?
패턴과 서버 정보는 공유할 수 있지만, 개인 설정 파일은 비공개로 유지하세요. 로컬 경로, 개인 설정, 인프라 구성이 노출될 수 있습니다.
کیا یہ صفحہ مددگار تھا؟