Linux

Linux: OpenSSH 사용법

dewstream 2025. 2. 24. 18:00

※ Linux: How to use OpenSSH.

 

안녕하세요. 듀스트림입니다.

 

오늘은 Linux에서의 OpenSSH 사용법에 대해 알아보겠습니다.

 

OpenSSH: Manual Pages

Web manual pages are available from OpenBSD for the following commands. These manual pages reflect the latest development release of OpenSSH. ssh(1) — The basic rlogin/rsh-like client program sshd(8) — The daemon that permits you to log in ssh_config(5

www.openssh.com


1. SSH 개요

1.1. SSH (Secure Shell)

• 네트워크 상에서 암호화된 안전한 통신을 제공하는 프로토콜로, 원격 접속, 파일 전송, 터널링 등 다양한 기능을 지원합니다.

• 기본 포트는 22번을 사용합니다.


1.2. OpenSSH

• SSH 프로토콜의 오픈 소스 구현체로, RHEL을 비롯한 대부분의 리눅스 배포판에서 기본적으로 제공됩니다.

• SSH 서버 데몬은(sshd) systemd로 관리되며, systemctl 명령어로 제어할 수 있습니다.

• RHEL 시스템에는 기본적으로 OpenSSH가 설치되어 있지만, 설치가 필요하다면 아래 명령어로 설치하시면 됩니다.

yum install openssh-server -y

 


2. SSH 사용법

2.1. 기본 사용법

ssh [옵션] [사용자명]@호스트
# 예시: 로컬에서 postgres 계정으로 192.168.100 서버에 22번 포트를 사용해서 SSH로 접속
ssh postgres@192.168.1.100

2.2. 주요 옵션

 

2.2.1  -p 포트번호

접속할 포트 번호를 지정합니다. (미지정 시 기본 포트 사용)

ssh -p 2222 postgres@192.168.1.100

 

 

2.2.2. -i 파일경로

접속에 가용할 개인 키 파일을 지정합니다.

ssh -i ~/.ssh/id_rsa postgres@192.168.1.100

 

 

2.2.3. -L / -R 포트 포워딩

로컬(-L) / 원격(-R) 포트 포워딩을 설정합니다.

# 예시: 로컬의 8080 포트를 원격 서버의 80 포트에 연결합니다.
ssh -L 8080:localhost:80 postgres@192.168.1.100

 

 

2.2.4 -o [옵션] 설정 추가

추가적인 SSH 설정을 지정할 수 있습니다.

# 예시: 호스트 키 검사를 건너뛰고 바로 접속을 시도
# 보통 SSH 접속 시에는 원격 서버의 호스트 키가 이전에 저장된 적이 없으면 접속을 시도하기 전에 호스트 키의 유효성을 검사
ssh -o StrictHostKeyChecking=no postgres@192.168.1.100

3. SSH 키 생성

3.1. 기본 개념

• 개인 키(private key): 본인만 가지고 있어야 하는 비밀 키로, 절대로 외부에 노출되어서는 안 됩니다.
• 공개 키(public key): 자유롭게 배포할 수 있는 키로, 개인 키와 쌍을 이루며 인증 과정에서 사용됩니다.


3.2. 키 생성 명령어: ssh-keygen

• 터미널에서 아래 명령어를 입력하여 SSH 키 쌍을 생성합니다.

# 예시: RSA 알고리즘을 사용하여 4096 비트의 키를 생성
ssh-keygen -t rsa -b 4096

# RSA 외 ed25519도 많이 사용합니다.
ssh-keygen -t ed25519

3.3. 생성 과정

 

3.3.1. 파일 저장 위치 선택

명령어 실행 시 기본 저장 위치가 "~/.ssh/id_rsa (개인 키)"와 "~/.ssh/id_rsa.pub (공개 키)"로 제시됩니다. 엔터를 누르면 기본 위치에 저장됩니다.

 

 

3.3.2. 패스프레이즈 입력

보안을 위해 키에 추가 암호를 설정할 수 있습니다. (빈 칸으로 두면 암호 없이 사용)

Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/username/.ssh/id_rsa.
Your public key has been saved in /home/username/.ssh/id_rsa.pub.

[그림 1] 키 생성 예시


4. SSH 키 복사

4.1. 기본 원리

• ssh-copy-id 명령어는 로컬에서 생성한 공개키를 원격 서버의 ~/.ssh/authorized_keys 파일에 추가합니다.
• 이를 통해 다음 번 SSH 접속 시, 패스워드 없이 키 기반 인증을 사용할 수 있게 됩니다.


4.2. 키 복사 명령어: ssh-copy-id

• 터미널에서 아래 명령어로 생성한 공개키를 원격 서버로 복사합니다.

ssh-copy-id postgres@192.168.1.100

4.3. 옵션 및 주의 사항

 

4.3.1. 특정 키 지정

기본적으로 ~/.ssh/id_rsa.pub (또는 사용 중인 키의 공개키)가 복사되지만, 다른 키를 사용하고 싶다면 -i 옵션으로 지정할 수 있습니다.

ssh-copy-id -i ~/.ssh/my_custom_key.pub postgres@192.168.1.100

 

 

4.3.2. 권한 문제

• 원격 서버의 ~/.ssh 디렉터리와 authorized_keys 파일의 권한이 올바르지 않으면 인증이 실패할 수 있습니다.

  • ~/.ssh 디렉터리: 700 (drwx------)
  • authorized_keys 파일: 600 (-rw-------)

 

4.3.3. 수동 설정

• 만약 ssh-copy-id가 동작하지 않는 경우, 로컬 공개키 파일의 내용을 복사하여 원격 서버의 ~/.ssh/authorized_keys 파일에 직접 붙여넣는 방법도 있습니다.


5. SSH 키와 계정 만료의 관계 표

설정 SSH 키 인증에 영향 설명
계정 만료 O 계정이 만료되면 SSH 접속 불가.
비밀번호 만료 X SSH 키 인증에는 영향 없음. 단, 비밀번호 변경 필요 경고.
계정 비활성화 O 계정이 비활성화되면 SSH 접속 불가.

이 포스팅에서 제일 중요한 부분은 5번입니다-!

비밀번호가 만료돼서 계정이 비활성화됐다면, 비밀번호 변경 시 SSH 키 생성 및 복사도 다시 해주셔야 합니다.

 

오늘은 여기까지~