SSH

메론보이·2024년 5월 27일

리눅스

목록 보기
9/17
post-thumbnail

개념과 정의

OpenSSH (Open Secure Shell)는 네트워크를 통해 안전하게 원격 시스템에 접속하고, 명령어를 실행하며 파일을 전송할 수 있도록 해주는 툴입니다.
SSH (Secure Shell)는 암호화를 사용하여 안전한 통신을 보장하는 프로토콜로, OpenSSH는 이를 구현한 오픈 소스 소프트웨어입니다.

왜 사용하는가?

OpenSSH는 다음과 같은 이유로 널리 사용됩니다:

  • 보안성: 데이터 전송 시 암호화를 통해 도청 및 중간자 공격을 방지합니다.
  • 인증: 암호 기반 인증 및 공개 키 인증을 통해 사용자의 신원을 확인합니다.
  • 다양한 기능: 원격 명령 실행, 파일 전송, 포트 포워딩 등 다양한 기능을 지원합니다.
  • 사용 편의성: 다양한 운영 체제에서 사용할 수 있으며, 설정과 사용이 비교적 간단합니다.

언제 사용하는가?

OpenSSH는 다음과 같은 상황에서 주로 사용됩니다:

  • 원격 서버 관리: 관리자가 물리적으로 접근할 수 없는 서버를 원격에서 관리할 때.
  • 안전한 파일 전송: SFTP나 SCP를 통해 파일을 안전하게 전송할 때.
  • 보안 터널링: 포트 포워딩을 통해 안전한 터널을 만들어 민감한 데이터를 전송할 때.
  • 자동화 스크립트: SSH를 통해 원격 서버에서 스크립트를 실행하고 자동화 작업을 수행할 때.

어떻게 사용하는가?

  1. 설치

리눅스 배포판에 따라 OpenSSH를 설치하는 명령어는 다음과 같습니다:

Ubuntu/Debian:

sudo apt update
sudo apt install openssh-server

CentOS/RHEL:

sudo yum install openssh-server

Fedora:

sudo dnf install openssh-server
  1. 서비스 시작 및 상태 확인 ,서비스 시작:
sudo systemctl start sshd

서비스 상태 확인:

sudo systemctl status sshd

서비스 자동 시작 설정:

sudo systemctl enable sshd
  1. 원격 접속
    SSH 클라이언트를 사용하여 원격 서버에 접속:
ssh username@hostname_or_ip

ssh-keygen

개념

  • ssh-keygen은 SSH(Secure Shell) 프로토콜에서 사용되는 인증 키를 생성하는 도구입니다.
  • SSH 키는 암호화된 통신을 가능하게 하며, 주로 공개 키 기반 인증을 위해 사용됩니다.
  • 공개 키와 개인 키의 쌍으로 구성되어 있으며, 공개 키는 서버에 저장되고, 개인 키는 클라이언트에 안전하게 보관됩니다.

작동 원리

ssh-keygen의 작동 원리는 다음과 같습니다:

  1. 키 쌍 생성:
    ssh-keygen 명령어를 실행하면 공개 키와 개인 키 쌍이 생성됩니다.
    공개 키는 원격 서버에 배포되고, 개인 키는 클라이언트 시스템에 안전하게 저장됩니다.

  2. 공개 키 배포:
    공개 키를 원격 서버의 특정 파일 (~/.ssh/authorized_keys)에 추가합니다.
    이를 통해 해당 키 쌍을 사용한 클라이언트가 서버에 접근할 수 있도록 설정합니다.

  3. 인증 과정:
    클라이언트가 서버에 접속할 때, 개인 키를 사용하여 서버의 요청을 암호화된 방식으로 응답합니다.
    서버는 클라이언트의 응답을 자신의 authorized_keys 파일에 저장된 공개 키로 검증하여 인증합니다.

실제 사용 방법

  1. 키 쌍 생성
    ssh-keygen 명령어를 사용하여 키 쌍을 생성합니다:

ssh-keygen

이 명령어를 실행하면 다음과 같은 프롬프트가 표시됩니다:


Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):

기본 경로를 그대로 사용하거나, 원하는 경로를 지정할 수 있습니다. 다음 단계에서 비밀번호를 설정할 수 있으며, 비밀번호 없이 사용도 가능합니다.

  1. 공개 키 배포
    생성된 공개 키 (id_rsa.pub)를 원격 서버에 복사합니다. 이를 위해 ssh-copy-id 명령어를 사용할 수 있습니다:

ssh-copy-id username@remote_host

이 명령어는 로컬 머신의 공개 키를 원격 서버의 ~/.ssh/authorized_keys 파일에 추가합니다.

  1. 원격 서버에 접속
    공개 키를 배포한 후, SSH를 통해 원격 서버에 접속합니다:

ssh username@remote_host

이제 공개 키 기반 인증이 설정되어, 비밀번호 없이도 원격 서버에 안전하게 접속할 수 있습니다.

  1. 실제 사용 예시
    다음은 ssh-keygen과 관련된 명령어 예시입니다:

키 생성:


ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

이 명령어는 RSA 알고리즘을 사용하여 4096비트 길이의 키를 생성하고, 주석에 이메일을 포함합니다.

공개 키 복사:


ssh-copy-id user@remote_host

이는 로컬 머신의 공개 키를 원격 서버에 복사합니다.

원격 접속:


ssh user@remote_host

공개 키 기반 인증을 사용하여 원격 서버에 접속합니다.

비밀번호 없는 키 생성:


ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa_nopass

이 명령어는 비밀번호 없이 RSA 키 쌍을 생성합니다.

  1. 구성 파일 예시
    ~/.ssh/config 파일을 사용하여 SSH 접속을 간편하게 설정할 수 있습니다:

Host myserver
    HostName remote_host
    User username
    IdentityFile ~/.ssh/id_rsa

이제 ssh myserver 명령어로 쉽게 접속할 수 있습니다.

요약

  1. 클라이언트에서 ssh-keygen 명령어를 실행하여 키 쌍을 생성합니다.
  2. 생성된 공개 키를 서버에 복사하여 ~/.ssh/authorized_keys 파일에 추가합니다.
  3. 이후, 클라이언트는 개인 키를 사용하여 서버에 접속할 수 있습니다.

참고

ssh원리
ssh2
ssh3
ssh4

0개의 댓글