μ§€λ‚œ ν¬μŠ€νŒ…μ—μ„œ ssh λͺ…λ Ήμ–΄μ˜ 기본적인 μ‚¬μš©λ²•κ³Ό μœ μš©ν•œ μ˜΅μ…˜λ“€μ„ μ‚΄νŽ΄λ³΄μ•˜μŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ 맀번 λ³΅μž‘ν•œ IP μ£Όμ†Œ, μ‚¬μš©μž 이름, 포트 번호 등을 일일이 μž…λ ₯ν•˜λŠ” 것은 μ—¬κ°„ 번거둜운 일이 μ•„λ‹™λ‹ˆλ‹€. 이럴 λ•Œ SSH Config νŒŒμΌμ„ ν™œμš©ν•˜λ©΄ 이런 λ²ˆκ±°λ‘œμ›€μ„ ν•œ λ²ˆμ— ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 마치 즐겨찾기처럼 자주 μ‚¬μš©ν•˜λŠ” μ„œλ²„ 접속 정보λ₯Ό μ €μž₯해두고 별칭(Alias) 으둜 μ†μ‰½κ²Œ 접속할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ € μ—­μ‹œ config 파일의 쑴재λ₯Ό λͺ¨λ₯΄λ˜ "μ™„μ „ 초보"μ‹œμ ˆμ—λŠ” '이 λ³΅μž‘ν•œ ssh μ—°κ²° λͺ…λ Ήμ–΄λ₯Ό μ–΄λ–»κ²Œ 맀번 μž‘μ„±ν•˜μ§€?' λΌλŠ” 생각에 자주 μ“°λŠ” λͺ…λ Ήμ–΄ 쀄을 κ·ΈλŒ€λ‘œ .bashrcνŒŒμΌμ— alias 등둝을 해놓고 μ“΄ 적도 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. λ‚˜μ€‘μ— config파일 μž‘μ„±λ²•μ„ μ•Œκ³  λ‚˜μ„œλŠ” λ‚΄κ°€ μ–Όλ§ˆλ‚˜ λ¬΄μ‹ν•œ λ°©λ²•μœΌλ‘œ μ‚¬μš©ν–ˆ λŠ”μ§€ μ•Œ 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

SSH config 쑴재λ₯Ό κΉ¨λ‹«κ³  κ°νƒ„ν•˜λŠ” λ‚΄λͺ¨μŠ΅


SSH Config νŒŒμΌμ€ λ¬΄μ—‡μΈκ°€μš”?

SSH Config νŒŒμΌμ€ SSH ν΄λΌμ΄μ–ΈνŠΈμ˜ λ™μž‘ 방식을 μ‚¬μš©μž μ •μ˜ν•˜λŠ” μ„€μ • νŒŒμΌμž…λ‹ˆλ‹€. 이 νŒŒμΌμ— νŠΉμ • ν˜ΈμŠ€νŠΈμ— λŒ€ν•œ 접속 정보(μ‚¬μš©μž 이름, 포트, μ‚¬μš©ν•  ν‚€ 파일 λ“±)λ₯Ό 미리 μ €μž₯해두면, λ‚˜μ€‘μ— 접속할 λ•Œ 짧은 λ³„μΉ­λ§ŒμœΌλ‘œ 접속이 κ°€λŠ₯ν•΄μ§‘λ‹ˆλ‹€.

  • μœ„μΉ˜: 일반적으둜 μ‚¬μš©μž ν™ˆ λ””λ ‰ν† λ¦¬μ˜ .ssh 폴더 μ•ˆμ— configλΌλŠ” μ΄λ¦„μœΌλ‘œ μ‘΄μž¬ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. sshλ₯Ό 처음 μ„€μΉ˜ ν•˜μ…¨λ‹€λ©΄ 없을 κ²λ‹ˆλ‹€.μ΄λŸ΄λ• λ§Œλ“€μ–΄μ•Ό ν•©λ‹ˆλ‹€.

  • 파일 생성: λ§Œμ•½ ~/.ssh/config 파일이 μ—†λ‹€λ©΄, 직접 생성해 μ£Όλ©΄ λ©λ‹ˆλ‹€. κΆŒν•œμ„ λ°˜λ“œμ‹œ 600으둜 ν•˜μ„Έμš”.

    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번 ν¬νŠΈκ°€ μ μš©λ©λ‹ˆλ‹€.

사싀, μœ„μ˜ μ˜ˆμ‹œμ— * μ™€μΌλ“œμΉ΄λ“œλ°©μ‹μ„ 일단 μ†Œκ°œλŠ” ν–ˆμ§€λ§Œ, μ‹€μ œλ‘œ μ €λŠ” 거의 μ €λŸ° 방식을 μ‚¬μš©ν•˜μ§„ μ•ŠμŠ΅λ‹ˆλ‹€. κ·Έλƒ₯ μ„œλ²„ν•˜λ‚˜μ— μ„€μ •ν•˜λ‚˜ 1:1둜 λ§€ν•‘ν•˜λŠ”κ²Œ κ΄€λ¦¬ν•˜κΈ°λ„ μ‰½μŠ΅λ‹ˆλ‹€.
같은 μ„œλ²„λ₯Ό λ‹€λ₯Έ μ„€μ •μœΌλ‘œ μ ‘κ·Όν•˜λŠ” κ²½μš°λ„ 있기 λ•Œλ¬Έμ— κ·ΈλŸ΄λ•Œλ§ˆλ‹€ μ„€μ • ν•˜λ‚˜μ”© 좔가해놓고, 마치 λ ˆμŠ€ν† λž‘μ—μ„œ λ©”λ‰΄νŒ 보고 μŒμ‹ κ³ λ₯΄λ“―이 별칭을 κ³¨λΌμ„œ ssh my-alias 이런 μ‹μœΌλ‘œ 주문만 ν•˜λ©΄ λ˜λ„λ‘ κ΅¬μ„±ν•©λ‹ˆλ‹€.


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번 포트둜 연결됨)


Config 파일 μ‚¬μš©μ˜ μž₯점

  • νŽΈμ˜μ„±: κΈΈκ³  λ³΅μž‘ν•œ SSH λͺ…λ Ήμ–΄λ₯Ό 짧은 λ³„μΉ­μœΌλ‘œ λŒ€μ²΄ν•˜μ—¬ μž…λ ₯ 였λ₯˜λ₯Ό 쀄이고 μ‹œκ°„μ„ μ ˆμ•½ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • 생산성: 자주 μ ‘μ†ν•˜λŠ” μ„œλ²„λ₯Ό λΉ λ₯΄κ²Œ 였갈 수 μžˆμ–΄ μž‘μ—… 효율이 λ†’μ•„μ§‘λ‹ˆλ‹€.
  • 관리 μš©μ΄μ„±: λͺ¨λ“  접속 κ΄€λ ¨ 섀정을 ν•œκ³³μ—μ„œ 관리할 수 μžˆμ–΄ μœ μ§€λ³΄μˆ˜κ°€ μš©μ΄ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, μ„œλ²„μ˜ IP μ£Όμ†Œκ°€ λ³€κ²½λ˜λ”λΌλ„ Config 파일만 μˆ˜μ •ν•˜λ©΄ λ©λ‹ˆλ‹€.
  • λ³΄μ•ˆ: μ€‘μš”ν•œ 정보(예: ν‚€ 파일 경둜)λ₯Ό λͺ…λ Ήμ–΄ νžˆμŠ€ν† λ¦¬μ— 남기지 μ•Šμ•„λ„ λ©λ‹ˆλ‹€.

마치며

SSH Config νŒŒμΌμ€ SSHλ₯Ό μ‚¬μš©ν•˜λŠ” λͺ¨λ“  κ°œλ°œμžμ™€ μ‹œμŠ€ν…œ κ΄€λ¦¬μžμ—κ²Œ ν•„μˆ˜μ μΈ λ„κ΅¬μž…λ‹ˆλ‹€. 이 νŒŒμΌμ„ ν™œμš©ν•˜μ—¬ μ—¬λŸ¬λΆ„μ˜ SSH 접속 κ²½ν—˜μ„ 훨씬 더 νŽΈλ¦¬ν•˜κ³  효율적으둜 λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. ~/.ssh/config νŒŒμΌμ„ μ—΄κ³  μ—¬λŸ¬λΆ„λ§Œμ˜ 별칭을 λ§Œλ“€μ–΄ λ³΄μ„Έμš”!

SSH 와 κ΄€λ ¨λœ λ‹€λ₯Έ ν¬μŠ€νŒ…λ„ ν•¨κ»˜ μ½μ–΄λ³΄μ„Έμš”! 였λ₯Έμͺ½ κ²€μƒ‰μ°½μ—μ„œ ' ssh' λ₯Ό κ²€μƒ‰ν•˜μ‹œλ©΄ ssh 와 κ΄€λ ¨ν•œ λ‹€μ–‘ν•œ 글을 보싀 수 μžˆμŠ΅λ‹ˆλ‹€.

κΆκΈˆν•œ 점이 μžˆλ‹€λ©΄ μ–Έμ œλ“ μ§€ λŒ“κΈ€λ‘œ μ§ˆλ¬Έν•΄μ£Όμ„Έμš”!