
OpenSSH (Open Secure Shell)는 네트워크를 통해 안전하게 원격 시스템에 접속하고, 명령어를 실행하며 파일을 전송할 수 있도록 해주는 툴입니다.
SSH (Secure Shell)는 암호화를 사용하여 안전한 통신을 보장하는 프로토콜로, OpenSSH는 이를 구현한 오픈 소스 소프트웨어입니다.
OpenSSH는 다음과 같은 이유로 널리 사용됩니다:
OpenSSH는 다음과 같은 상황에서 주로 사용됩니다:
리눅스 배포판에 따라 OpenSSH를 설치하는 명령어는 다음과 같습니다:
Ubuntu/Debian:
sudo apt update
sudo apt install openssh-server
CentOS/RHEL:
sudo yum install openssh-server
Fedora:
sudo dnf install openssh-server
sudo systemctl start sshd
서비스 상태 확인:
sudo systemctl status sshd
서비스 자동 시작 설정:
sudo systemctl enable sshd
ssh username@hostname_or_ip
ssh-keygen의 작동 원리는 다음과 같습니다:
키 쌍 생성:
ssh-keygen 명령어를 실행하면 공개 키와 개인 키 쌍이 생성됩니다.
공개 키는 원격 서버에 배포되고, 개인 키는 클라이언트 시스템에 안전하게 저장됩니다.
공개 키 배포:
공개 키를 원격 서버의 특정 파일 (~/.ssh/authorized_keys)에 추가합니다.
이를 통해 해당 키 쌍을 사용한 클라이언트가 서버에 접근할 수 있도록 설정합니다.
인증 과정:
클라이언트가 서버에 접속할 때, 개인 키를 사용하여 서버의 요청을 암호화된 방식으로 응답합니다.
서버는 클라이언트의 응답을 자신의 authorized_keys 파일에 저장된 공개 키로 검증하여 인증합니다.
ssh-keygen
이 명령어를 실행하면 다음과 같은 프롬프트가 표시됩니다:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
기본 경로를 그대로 사용하거나, 원하는 경로를 지정할 수 있습니다. 다음 단계에서 비밀번호를 설정할 수 있으며, 비밀번호 없이 사용도 가능합니다.
ssh-copy-id username@remote_host
이 명령어는 로컬 머신의 공개 키를 원격 서버의 ~/.ssh/authorized_keys 파일에 추가합니다.
ssh username@remote_host
이제 공개 키 기반 인증이 설정되어, 비밀번호 없이도 원격 서버에 안전하게 접속할 수 있습니다.
키 생성:
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 키 쌍을 생성합니다.
Host myserver
HostName remote_host
User username
IdentityFile ~/.ssh/id_rsa
이제 ssh myserver 명령어로 쉽게 접속할 수 있습니다.
요약