--- title: ssh — 원격 서버 접속 date: 2026-10-18 time: 12:00 model: admin category: programs author_type: human summary: 원격 서버에 암호화 접속하는 기본 명령어. 키 인증, 포트 지정, 터널링까지 실무 활용 정리. tags: 프로그램, 원격 서버 접속 관리, ssh --- **💬 "ssh 명령어"** ssh는 원격 서버에 **암호화된 셸 세션**을 엽니다. 서버 운영의 기본 통로입니다. 실무에서는 비밀번호 대신 **키 인증**을 쓰고, -p/-i/-L 같은 옵션을 함께 씁니다. - **개념**: 원격 호스트에 접속해 명령을 실행하는 암호화 프로토콜입니다. - **왼쪽**: `user@host` 형식으로 접속 대상입니다. - **옵션**: -p 포트, -i 키 파일, -L 터널 등을 지정합니다. - **종료**: `exit` 또는 Ctrl+D로 세션을 닫습니다. ## 자주 쓰는 옵션 | 옵션 | 설명 | | --- | --- | | -p <포트> | 기본 22가 아닌 포트로 접속합니다 | | -i <키파일> | 사용할 개인 키를 지정합니다 | | -L <로컬>:<대상>:<포트> | 로컬 포트 포워딩(터널)을 만듭니다 | | -v | 접속 과정을 자세히 출력해 문제를 진단합니다 | ## 필수 명령어 조합 3가지 - `ssh -p 22022 deploy@10.0.0.9` — 비표준 포트로 배포 계정 접속 - `ssh -i ~/.ssh/id_ed25519_gamehub root@10.0.0.9` — 지정한 키로 관리자 접속 - `ssh -L 5433:127.0.0.1:5432 deploy@10.0.0.9` — 원격 DB를 로컬 포트로 터널링 **💬 "이걸로 배포 안정성을 높이는 예시 알려줘"** 실제 운영 중인 서버에서 자주 만나는 상황을 순서대로 정리했습니다. ### 1단계 · 도달성 확인 포트가 열려 있는지 먼저 봅니다. ``` nc -vz 10.0.0.9 22 || nc -vz 10.0.0.9 22022 ``` ### 2단계 · 접속 키와 포트를 지정해 접속합니다. ``` ssh -i ~/.ssh/deploy_ed25519 -p 22022 deploy@10.0.0.9 ``` ### 3단계 · 문제 시 진단 접속이 안 되면 -v로 어느 단계에서 막히는지 봅니다. ``` ssh -v -p 22022 deploy@10.0.0.9 ``` ## 실무에서는 이렇게 씁니다 ### 1. 운영 서버 긴급 접속 **상황** — 장애 알림을 받고 운영 서버에 들어가야 합니다. ``` ssh -i ~/.ssh/prod_ed25519 ops@10.0.0.9 ``` **결과** — 키 인증으로 비밀번호 없이 바로 접속됩니다. **포인트** — 긴급 상황에서 비밀번호를 찾지 않도록 미리 키 인증을 설정해 둡니다. ### 2. 원격 DB 터널 **상황** — 방화벽 때문에 로컬에서 DB에 직접 못 붙습니다. ``` ssh -N -L 5433:127.0.0.1:5432 ops@10.0.0.9 ``` **결과** — 로컬 5433 포트가 원격 5432로 연결되어 로컬 도구로 접근 가능합니다. **포인트** — -N은 셸 없이 터널만 엽니다. 작업 후 세션을 닫아 터널을 정리합니다. ## 주의할 점 - root 직접 접속은 권장하지 않습니다. 배포 계정 + sudo를 씁니다. - 키 파일 권한은 600이어야 합니다. 너무 열려 있으면 ssh가 거부합니다. - 터널(-L)은 접속이 유지되는 동안만 유효합니다. 끊기면 다시 열어야 합니다. - Host key 변경 경고는 중간자 공격 가능성이 있으므로 무턱대고 known_hosts를 지우지 않습니다. ## 실제 실행 화면 키 인증으로 운영 서버에 접속해 상태를 확인한 결과입니다. ![ssh 명령어 실행 결과: 원격 접속과 상태 확인](https://games.cursorai.co.kr/assets/ssh-demo.png) 실제 운영 중인 서버 --- 원문(HTML): https://games.cursorai.co.kr/programs/linux/remote/ssh.html