Linux / 명령어 / ssh - 암호화된 원격 접속과 명령 실행

ssh는 암호화된 연결로 원격 서버에 로그인하거나 명령을 실행하는 OpenSSH 클라이언트입니다. 서버 주소와 계정을 지정해 접속하며, 처음 연결할 때는 서버 호스트 키의 지문을 확인해야 합니다.

ssh 명령어란?

SSH는 전송 내용을 암호화하고 서버 신원을 호스트 키로 확인합니다. 사용자 인증에는 암호나 공개키 방식이 쓰일 수 있습니다. user@host의 사용자는 원격 계정이며, 원격 명령을 인수로 주면 대화형 셸 대신 그 명령을 실행하고 종료합니다. 예제의 server.example.com과 계정은 실제 값으로 바꾸세요.

기본 문법

ssh [옵션] [사용자@]호스트 [원격 명령]

설치된 구현과 옵션은 배포판에 따라 다를 수 있습니다. man ssh으로 현재 시스템의 설명을 확인하세요.

사용 예제

원격 로그인

서버의 호스트 키 지문을 신뢰할 수 있는 경로로 확인한 뒤 접속합니다.

ssh alice@server.example.com

다른 SSH 포트 접속

서버가 기본 포트가 아닌 2222를 사용할 때 소문자 -p로 지정합니다.

ssh -p 2222 alice@server.example.com

원격 명령 한 번 실행

대화형 셸에 들어가지 않고 원격 시스템의 호스트 이름을 확인합니다.

ssh alice@server.example.com hostname

처음 접속할 때의 확인 순서

ssh로 처음 접속하는 서버라면 호스트 키 지문 확인 메시지가 나타날 수 있습니다. 서버 관리자가 제공한 지문과 대조한 뒤에만 승인하세요.

ssh user@server.example.test

처음 접속 시 나타날 수 있는 메시지 형식:

The authenticity of host 'server.example.test' can't be established.
ED25519 key fingerprint is SHA256:...
Are you sure you want to continue connecting (yes/no/[fingerprint])?

여기서 yes를 입력하면 호스트 키가 로컬 known_hosts에 기록됩니다. 다음 접속에서 키가 바뀌었다는 경고가 뜨면 무작정 기록을 지우지 말고 서버 재설치·키 교체 여부를 확인하세요. 암호 인증보다 공개키 인증을 사용할 때는 개인키 파일의 접근 권한과 백업을 안전하게 관리합니다.

접속에 실패하면 DNS 이름 해석, TCP 포트 도달, 서버의 SSH 서비스, 인증 단계를 나누어 확인하세요. ssh -v 사용자@호스트는 협상과 인증이 어디에서 멈추는지 단서를 주지만, 상세 로그를 공유할 때 호스트명과 사용자 정보가 노출될 수 있습니다. 권한 오류라면 개인키 파일 권한도 점검합니다.

주요 옵션과 형식

옵션·형식 설명
-p 포트 원격 SSH 서버 포트를 지정합니다.
-i 키파일 사용할 개인키 파일을 지정합니다.
-J 점프호스트 점프 호스트를 거쳐 대상에 접속합니다.
-L 로컬포트:호스트:포트 로컬 포트 포워딩을 구성합니다.
-N 원격 명령을 실행하지 않습니다. 포워딩에 주로 사용합니다.
-v 접속·인증 과정을 자세히 출력합니다.

사용할 때 주의할 점

처음 접속할 때 표시되는 호스트 키 지문을 무조건 승인하지 마세요. 관리자가 제공한 지문과 별도 경로로 대조하고, 경고가 바뀌면 중간자 공격 또는 서버 키 교체 가능성을 확인하세요. 개인키는 다른 사람에게 전달하지 않고 접근 권한을 제한합니다. 포워딩은 로컬 서비스의 노출 범위를 바꿀 수 있으므로 바인딩 주소를 확인하세요.

자주 묻는 질문

ssh 접속 시 서버 키가 변경됐다는 경고가 나오면?

서버 재설치나 키 교체일 수도 있지만 공격 가능성도 있습니다. 새 지문을 관리자와 독립적인 경로로 확인하기 전에는 기존 키를 삭제하거나 검증을 끄지 마세요.

공식 문서

옵션의 정확한 동작과 구현별 차이는 ssh 관련 공식 문서에서 확인할 수 있습니다.

같은 카테고리의 다른 글
Linux / 명령어 / lsmod - 로드된 커널 모듈 확인

Linux / 명령어 / lsmod - 로드된 커널 모듈 확인

Linux lsmod 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / xz - 파일을 xz 형식으로 압축하기

Linux / 명령어 / xz - 파일을 xz 형식으로 압축하기

Linux xz 명령어의 용도와 기본 문법을 알아봅니다. 파일 처리 예제, 주요 옵션과 원본 보존·덮어쓰기 주의점을 설명합니다.

Linux 강좌 / 현재 위치 확인하고 이동하기 - pwd, ls, cd, tree

Linux 강좌 / 현재 위치 확인하고 이동하기 - pwd, ls, cd, tree

pwd, ls, cd, tree를 연결해 현재 위치를 확인하고 디렉터리를 탐색합니다. 절대·상대 경로의 차이와 안전하게 돌아오는 방법도 실습합니다.

Linux / 명령어 / ethtool - 네트워크 링크·드라이버 정보 확인

Linux / 명령어 / ethtool - 네트워크 링크·드라이버 정보 확인

Linux ethtool 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / mktemp - 안전한 임시 파일과 디렉터리 생성

Linux / 명령어 / mktemp - 안전한 임시 파일과 디렉터리 생성

Linux mktemp 명령어로 예측하기 어려운 이름의 임시 파일과 디렉터리를 안전하게 만드는 방법을 설명합니다. 템플릿, TMPDIR, trap을 이용한 정리와 -u 옵션의 위험도 알아봅니다.

Linux / 명령어 / info - GNU 문서 확인

Linux / 명령어 / info - GNU 문서 확인

info 명령어로 GNU 설명서를 탐색하는 방법을 설명합니다. 노드와 메뉴 이동, 본문·색인 검색, 특정 문서 위치 지정, 텍스트 출력과 문서가 없을 때의 해결 방법을 정리합니다.

Linux / 명령어 / host - 도메인과 IP 주소의 DNS 정보 간단히 조회

Linux / 명령어 / host - 도메인과 IP 주소의 DNS 정보 간단히 조회

Linux host 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / reboot - 시스템 안전하게 재시작

Linux / 명령어 / reboot - 시스템 안전하게 재시작

Linux reboot 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / bzip2 - 파일을 bzip2 형식으로 압축하기

Linux / 명령어 / bzip2 - 파일을 bzip2 형식으로 압축하기

Linux bzip2 명령어의 용도와 기본 문법을 알아봅니다. 파일 처리 예제, 주요 옵션과 원본 보존·덮어쓰기 주의점을 설명합니다.

Linux / 명령어 / more - 텍스트를 화면 단위로 나누어 보기

Linux / 명령어 / more - 텍스트를 화면 단위로 나누어 보기

Linux more 명령어로 긴 텍스트를 화면 단위로 읽는 방법을 설명합니다. 이동과 검색 키, 파이프 사용법, less와의 차이를 함께 정리합니다.