※ 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.
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 키 생성 및 복사도 다시 해주셔야 합니다.
오늘은 여기까지~
'Linux' 카테고리의 다른 글
Linux: chage 사용법 (0) | 2025.02.23 |
---|---|
Linux: 심볼릭 링크와 하드 링크 (0) | 2025.01.16 |
Linux: ulimit(open files, core file size) 리소스 제한 변경 방법 (0) | 2025.01.11 |
Linux: top 사용법 (1) | 2025.01.03 |
도커(Docker): 명령어 사전 (0) | 2024.12.16 |