본문 바로가기
C.W.K.
Stream
Lesson 09 of 10 · published

SSH 설정

~10 min · ssh, config, tunnel

Level 0창 구경꾼
0 XP0/95 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

~/.ssh/config는 원격 주소록이야

설정이 없으면 호스트, 사용자, 포트, 키 경로를 매번 입력해야 해. ~/.ssh/configssh -i ~/.ssh/work_id -p 2222 alice@server.example.comssh work로 줄여 줘. scp, rsync처럼 내부에서 ssh를 쓰는 도구도 같은 별칭을 이용해.

기본 형식

Host work
  HostName server.example.com
  User alice
  Port 2222
  IdentityFile ~/.ssh/work_id_ed25519
  IdentitiesOnly yes

Host *.internal
  User root
  ProxyJump bastion.internal

Host에는 접속할 때 쓰는 별칭이나 패턴을 적고 그 아래 지시문을 들여써. OpenSSH는 많은 항목에서 먼저 얻은 값을 사용하므로 구체적인 블록을 넓은 기본값보다 앞에 둬.

자주 쓰는 지시문

  • IdentityFile ~/.ssh/foo: 사용할 개인 키를 정해.
  • IdentitiesOnly yes: 지정한 키만 시도해.
  • ProxyJump bastion: 점프 호스트를 거쳐 접속해.
  • ForwardAgent yes: 로컬 에이전트를 전달하므로 필요한 신뢰 경로에만 써.
  • LocalForward 5900 localhost:5900: 접속하면서 로컬 터널을 열어.
  • ControlMaster autoControlPath ~/.ssh/cm-%r@%h:%p: 여러 명령이 연결을 공유하게 해.

권한이 너무 넓으면 거부될 수 있어

chmod 700 ~/.ssh
chmod 600 ~/.ssh/config ~/.ssh/id_ed25519

개인 키와 설정 파일은 다른 사용자가 읽지 못하게 제한해야 해. 다만 chmod 600 ~/.ssh/*처럼 모든 항목을 한꺼번에 바꾸면 하위 디렉터리와 공개 키까지 잘못 건드릴 수 있어. 실제 파일 종류를 확인한 뒤 정확한 대상만 바꿔.

적용값과 연결 과정을 확인하기

ssh -G host는 합쳐진 설정을 보여 주고, ssh -v host는 연결 과정을 자세히 보여 줘. ssh -T host는 의사 터미널 할당을 끄지만 인증만 시험하는 전용 모드는 아니야. 원격 명령을 허용하는 대상이라면 ssh -v -o BatchMode=yes host true처럼 부작용 없는 명령으로 확인해.

SSH 설정은 먼저 정해진 값이 우선해

눈으로 한 블록만 읽으면 Host * 같은 다른 패턴에서 들어온 값을 놓칠 수 있어. 구체적인 Host 블록을 먼저 두고 ssh -G alias의 최종 출력을 확인해. 상세 로그에는 호스트와 사용자 정보가 담길 수 있으니 공유하기 전에 지워.

에이전트 전달은 키 복사가 아니야

원격 호스트가 개인 키 파일을 읽는 것은 아니지만 연결 중에는 로컬 에이전트에 서명을 요청할 수 있어. 신뢰하는 점프 호스트가 실제로 필요로 할 때만 켜고 넓은 기본값으로 두지 마.

Code

SSH 설정 시작·bash
mkdir -p ~/.ssh && chmod 700 ~/.ssh
cat > ~/.ssh/config <<'EOF'
Host *
  ServerAliveInterval 60
  ServerAliveCountMax 3
  ControlMaster auto
  ControlPath ~/.ssh/cm-%r@%h:%p
  ControlPersist 1h

Host server
  HostName 192.168.1.10
  User you_username
  IdentityFile ~/.ssh/id_ed25519
  IdentitiesOnly yes
EOF
chmod 600 ~/.ssh/config

External links

Exercise

~/.ssh/config의 기존 내용을 먼저 백업하고 특정 호스트 block 하나를 추가해. 설정 파일과 사용하는 개인 키의 권한만 각각 확인하고, 모든 파일에 일괄 chmod하지 마. ssh -G host로 최종 적용 설정을 먼저 본 뒤 무해한 원격 명령으로 연결을 시험해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.