기본 SSH 명령어를 사용하여 원격 서버에 연결하는 방법

안전한 원격 서버 액세스를 위해 기본 `ssh` 명령어를 마스터하세요. 이 필수 가이드는 사용자 이름, 호스트 주소, 사용자 지정 포트 옵션(`-p`)을 포함한 핵심 구문을 분석합니다. 비밀번호 및 보다 안전한 키 기반 인증(`-i`)을 사용하여 연결을 설정하는 방법을 알아보세요. 새로운 사용자와 관리자에게 완벽한 이 문서는 매번 강력하고 효율적인 연결을 보장하기 위한 실용적인 예제와 필수 문제 해결 팁을 제공합니다.

44 조회수

기본 SSH 명령어를 사용하여 원격 서버에 연결하는 방법

SSH(Secure Shell) 소개

SSH(Secure Shell)는 암호화된 네트워크 프로토콜을 사용하여 안전하지 않은 네트워크를 통해 네트워크 서비스를 안전하게 운영할 수 있도록 하는 보안 원격 관리의 기반입니다. 시스템 관리자와 개발자가 Linux, Unix 및 macOS 서버에 원격으로 액세스하고 관리하는 데 사용하는 표준 방법입니다. Telnet과 같은 이전의 안전하지 않은 프로토콜과 달리 SSH는 사용자 이름, 비밀번호 및 명령 출력을 포함한 모든 전송 데이터를 암호화하여 개인 정보 보호 및 무결성을 보장합니다.

이 가이드는 프로토콜의 가장 기본적인 측면, 즉 기본 ssh 명령 구문을 사용하여 간단하고 직접적인 연결을 설정하는 데 중점을 둡니다. 시스템 유지 관리, 코드 배포 또는 파일 전송을 수행하든 기본 연결 메커니즘을 이해하는 것은 Secure Shell 프로토콜의 전체 기능을 활용하는 데 필수적인 첫 번째 단계입니다.

연결 사전 준비 사항

연결을 시도하기 전에 다음 구성 요소가 준비되었는지 확인하십시오.

  1. SSH 클라이언트: 대부분의 최신 운영 체제(Linux, macOS)에는 OpenSSH 클라이언트가 기본적으로 포함되어 있습니다. Windows 10/11에도 통합 OpenSSH 클라이언트가 포함되어 있지만, 이전 버전에서는 PuTTY와 같은 타사 애플리케이션이 필요할 수 있습니다.
  2. 서버 주소(호스트): 원격 컴퓨터의 IP 주소(예: 192.168.1.50) 또는 정규화된 도메인 이름(FQDN, 예: server.example.com).
  3. 사용자 이름: 원격 서버의 유효한 사용자 계정(예: root, ubuntu, jdoe).
  4. 자격 증명: 지정된 사용자의 비밀번호 또는 일치하는 개인 SSH 키 파일.

기본 SSH 명령 구문

SSH 연결을 설정하려면 간단하고 일관된 구문 구조를 사용합니다. 명령은 누가 당신인지, 그리고 어디로 가고 싶은지를 지정해야 합니다.

핵심 구문 분석

가장 기본적인 SSH 명령 구조는 다음과 같습니다.

ssh [옵션] 사용자이름@호스트_주소
구성 요소 설명 예시 값
ssh Secure Shell 연결을 시작하는 명령입니다. -
[옵션] 연결을 수정하는 선택적 플래그(예: 포트, ID 파일). -p 2222
사용자이름 로그인하려는 원격 서버의 계정 이름입니다. sysadmin
호스트_주소 원격 서버의 IP 주소 또는 도메인 이름입니다. 172.31.255.10 또는 webserver.com

기본 포트로 연결

기본적으로 SSH 서버는 TCP 포트 22에서 수신 대기합니다. 원격 서버가 이 기본 포트를 사용하는 경우 사용자 이름과 호스트 외에 다른 옵션을 지정할 필요가 없습니다.

예: 192.168.1.100의 서버에 jdoe 사용자로 연결

ssh [email protected]

서버에 처음 연결하는 경우 SSH 클라이언트는 서버의 호스트 키를 확인하라는 메시지를 표시하고 연결을 신뢰할지 묻습니다. 진행하려면 yes를 입력해야 합니다. 이 키는 나중에 ~/.ssh/known_hosts 파일에 저장됩니다.

필수 연결 옵션

기본 구문은 대부분의 표준 연결에 적용되지만, 연결을 사용자 지정하거나 문제를 해결하기 위해 자주 사용되는 몇 가지 옵션이 있습니다.

사용자 지정 포트 지정 (-p)

보안상의 이유로 많은 서버 관리자가 기본 SSH 포트(22)를 비표준 포트(예: 2222, 50000)로 변경합니다. 이 사용자 지정 포트를 지정하려면 -p 플래그를 사용해야 합니다.

구문:

ssh -p [포트_번호] 사용자이름@호스트_주소

예: 포트 5555에서 appserver.local에 연결

ssh -p 5555 [email protected]

팁: 포트 배치

-p 옵션이 사용자이름@호스트 인수 앞에 온다는 점에 유의하십시오.

상세 출력 (-v)

연결에 문제가 있는 경우(예: 연결 시간 초과, 인증 실패) 상세 모드는 문제 해결에 매우 유용합니다. -v 플래그는 출력 수준을 높여 협상, 키 교환 및 인증 시도를 포함한 연결 프로세스의 상세 단계를 표시합니다.

구문:

ssh -v 사용자이름@호스트_주소

더 자세한 디버깅을 위해 -vv 또는 -vvv(최대 상세)를 사용할 수 있습니다.

단일 원격 명령 실행

SSH는 일반적으로 대화형 쉘 세션을 열기 위해 사용됩니다. 그러나 지속적인 세션을 설정하지 않고 원격 서버에서 단일 명령을 실행할 수도 있습니다. 연결은 명령을 실행하고, 출력을 반환한 다음, 즉시 닫힙니다.

구문:

ssh 사용자이름@호스트_주소 "실행할 명령"

예: 원격 서버에서 디스크 공간(df -h) 확인:

ssh [email protected] "df -h"

인증 방법

연결이 시작되면 서버는 신원을 확인하기 위해 인증을 요구합니다. 두 가지 주요 방법은 비밀번호 인증과 키 기반 인증입니다.

1. 비밀번호 인증

이것은 가장 간단한 방법으로, 연결이 설정된 후 서버가 사용자에게 비밀번호를 묻습니다. SSH는 비밀번호 전송을 암호화합니다.

과정:

  1. ssh 명령을 실행합니다.
  2. 서버가 묻습니다: [email protected]'s password:
  3. 비밀번호를 입력합니다 (입력 내용은 표시되지 않습니다).

경고: 보안 우려

편리하지만 비밀번호 인증은 무차별 대입 공격에 취약합니다. 모범 사례는 공개적으로 액세스 가능한 서버에서는 비밀번호 인증을 완전히 비활성화하고 SSH 키에만 의존하도록 하는 것입니다.

2. 키 기반 인증

키 기반 인증은 서버에 저장된 공개 키와 로컬 컴퓨터에 안전하게 저장된 해당 개인 키라는 두 개의 암호화 키 쌍을 사용합니다. 이 방법은 비밀번호보다 훨씬 안전합니다.

ID 파일 지정 (-i)

개인 키 파일이 기본 위치(~/.ssh/id_rsa 또는 ~/.ssh/id_ed25519)에 없으면 -i 옵션을 사용하여 위치를 지정해야 합니다.

구문:

ssh -i /경로/to/private/key/file 사용자이름@호스트_주소

예: 특정 키 prod_server_key를 사용하여 연결

ssh -i ~/.ssh/prod_server_key [email protected]

키 인증 설정 (간략 개요)

키 인증을 사용하려면 일반적으로 다음 단계를 따릅니다.

  1. 로컬 컴퓨터에서 ssh-keygen을 사용하여 키 쌍을 생성합니다.
  2. 공개 키를 원격 서버의 ~/.ssh/authorized_keys 파일로 복사합니다. 일반적으로 ssh-copy-id 유틸리티를 사용하여 수행됩니다.
ssh-copy-id 사용자이름@호스트_주소

실용적인 SSH 명령 요약

목표 명령 예시 설명
표준 연결 ssh [email protected] 기본 포트 22를 사용하여 연결합니다.
사용자 지정 포트 ssh -p 443 [email protected] 포트 443에 연결합니다.
키 인증 ssh -i ~/.ssh/dev_key dev@testbed 특정 개인 키 파일을 사용하여 연결합니다.
연결 디버깅 ssh -v [email protected] 문제 해결을 위해 상세 모드로 연결을 실행합니다.
원격 명령 ssh user@host "uptime" uptime 명령을 실행하고 종료합니다.

결론

기본 ssh 명령은 원격 서버 관리로 가는 관문입니다. 핵심 구문(ssh user@host)을 마스터하고 포트 지정(-p) 및 ID 파일(-i)과 같은 필수 옵션을 이해하면 모든 원격 서버 환경에 안정적으로 안전한 연결을 설정할 수 있습니다. 키 기반 인증으로의 전환은 높은 수준의 보안을 유지하는 데 중요하며, 가능한 경우 비밀번호 로그인보다 우선해야 합니다. 연결이 완료되면 원격 컴퓨터를 관리할 수 있는 완전한 명령줄 액세스 권한이 부여됩니다.