본문 바로가기
리눅스 강의

리눅스 SSH 설정 완벽 가이드: 안전한 원격 접속!

by infolily 2024. 10. 10.

리눅스 서버에 안전하게 접근하고 싶은데 어떻게 해야 할지 막막하시죠? 혹시 SSH라는 단어를 들어보셨나요? SSH는 Secure Shell의 약자로, 리눅스 서버에 안전하게 원격 접속할 수 있는 아주 중요한 프로토콜이에요. 마치 집 열쇠처럼 말이죠! 기존의 rsh, rlogin, telnet 같은 프로토콜들은 보안에 취약해서 쉽게 해킹될 위험이 있었는데, SSH는 이런 문제점을 해결하기 위해 탄생했답니다.

오늘은 리눅스에서 SSH를 설정하고 사용하는 방법을 단계별로 알려드릴게요. 서버 관리의 기본 중의 기본이라고 할 수 있으니, 꼼꼼하게 읽어보시고 숙지하시면 좋을 거예요!

리눅스 SSH 서버 설치하기: OpenSSH를 만나보세요

OpenSSH는 리눅스에서 SSH를 사용하기 위한 필수적인 소프트웨어인데요, 대부분의 리눅스 배포판에 기본적으로 설치되어 있어요. 혹시 설치되어 있는지 확인하고 싶으시다면, 다음 명령어를 터미널에 입력해보시면 돼요.

rpm -qa | grep sshd

만약 SSH가 설치되어 있지 않다면, 다음 명령어를 사용해서 OpenSSH 서버를 설치해 주세요.

yum install openssh-server

설치가 완료되면, SSH 서비스가 컴퓨터 부팅 시 자동으로 시작되도록 설정해야겠죠? 다음 명령어를 사용하면 된답니다.

systemctl enable sshd

이제 SSH 서버가 설치되었으니, 다음 단계로 넘어가서 더욱 안전하고 튼튼하게 SSH를 설정해 보도록 할까요?

SSH 서버 설정: 보안 옵션 설정하기

SSH 서버의 설정 파일은 /etc/ssh/sshd_config라는 파일에 저장되어 있어요. 이 파일을 편집하면 다양한 보안 옵션을 설정할 수 있답니다. 가장 중요한 건, SSH 접속 시 보안을 강화하는 것이겠죠?

예를 들어, 비밀번호 인증을 비활성화하고 SSH 키 기반 인증만 사용하도록 설정하고 싶다면, 다음과 같이 설정 파일을 수정하면 돼요.

# vi /etc/ssh/sshd_config
PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no

PasswordAuthentication no를 통해 비밀번호 인증을 막고, PubkeyAuthentication yes를 통해 키 기반 인증을 활성화하는 거예요. 그리고 ChallengeResponseAuthentication no를 통해 좀 더 보안을 강화할 수 있답니다. 물론, 여러분의 환경에 맞게 다른 옵션들도 수정 가능해요.

설정을 변경한 후에는 SSH 데몬을 재시작하여 변경 사항을 적용해야 한답니다.

systemctl reload sshd 

이렇게 하면 SSH 서버 설정이 완료되었어요. 하지만 아직 끝난 게 아니에요. 방화벽 설정도 해야 SSH로 서버에 접근할 수 있답니다.

방화벽 설정: SSH 연결 허용하기

SSH 연결을 위해서는 방화벽에서 22번 포트(기본 SSH 포트)에 대한 인바운드 트래픽을 허용해야 해요. 혹시 방화벽이 SSH 연결을 막고 있지는 않은지 확인해야겠죠?

먼저 방화벽의 상태를 확인해 봅시다.

systemctl status firewalld  # 방화벽 상태 확인

만약 방화벽이 활성화되어 있다면, 일시적으로 중지하거나 비활성화해야 할 수도 있어요.

systemctl stop firewalld    # 방화벽 일시 중지
systemctl disable firewalld  # 방화벽 비활성화

물론, 방화벽을 끄는 대신 22번 포트만 허용하도록 규칙을 추가할 수도 있어요. CentOS 7 이상에서는 firewall-cmd를 사용하여 다음과 같이 설정하면 된답니다.

firewall-cmd --zone=public --add-port=22/tcp --permanent
firewall-cmd --reload

iptables를 사용하는 경우에는 다음 명령어를 사용하면 돼요.

iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT 

이렇게 하면 방화벽 설정이 완료되고, 이제 SSH로 서버에 접속할 수 있을 거예요.

SSH 키 쌍 생성 및 사용: 비밀번호 없이 접속하기

SSH 키 기반 인증을 사용하면 비밀번호를 입력하지 않고도 서버에 접속할 수 있어서 매우 편리해요. 키 쌍은 공개 키와 비밀 키로 구성되어 있는데요, 공개 키는 서버에 저장하고, 비밀 키는 자신의 컴퓨터에 보관하는 거예요.

먼저 자신의 컴퓨터에서 키 쌍을 생성해야 한답니다. 다음 명령어를 사용하면 돼요.

ssh-keygen -t rsa -b 2048

키 생성 과정에서 비밀번호를 설정하라는 메시지가 나오면, 꼭 설정해 주세요. 보안을 위해 잊지 말아야 할 중요한 부분이랍니다.

생성된 공개 키(~/.ssh/id_rsa.pub)를 SSH 서버의 ~/.ssh/authorized_keys 파일에 추가해야 해요. 이렇게 하면 키 기반 인증을 통해 비밀번호 없이 서버에 접속할 수 있게 된답니다.

SSH 클라이언트로 원격 서버 접속하기: SSH 명령어 사용하기

이제 SSH를 통해 원격 서버에 접속해 볼까요? SSH 클라이언트를 사용하여 원격 서버에 접속하려면 다음과 같은 명령어를 사용하면 돼요.

ssh username@hostname_or_ip_address 

여기서 username은 서버의 사용자 이름이고, hostname_or_ip_address는 서버의 IP 주소 또는 도메인 이름이에요.

예를 들어, user1이라는 사용자 이름으로 192.168.1.100 IP 주소를 가진 서버에 접속하려면 다음과 같이 입력하면 된답니다.

ssh user1@192.168.1.100

SSH 접속 시, 서버의 공개 키가 자신의 컴퓨터에 저장되어 있는지 확인해야 해요. 처음 접속 시에는 서버의 공개 키가 저장되어 있지 않기 때문에, 다음과 같은 메시지가 나타날 수 있어요.

The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
RSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no)? 

이때 yes를 입력하면 서버의 공개 키가 자신의 컴퓨터에 저장되고, 다음부터는 이 메시지가 나타나지 않아요.

문제 해결: SSH 연결이 안 될 때

SSH 연결이 되지 않는 경우, 다음과 같은 사항들을 확인해 봐야 해요.

문제 해결 방법
SSH 서비스가 실행 중인지 확인 systemctl status sshd 명령어를 사용하여 SSH 서비스가 실행 중인지 확인합니다.
방화벽 규칙이 올바르게 설정되었는지 확인 방화벽 설정을 다시 확인하고 22번 포트가 열려 있는지 확인합니다.
SSH 클라이언트와 서버 간의 네트워크 연결이 정상인지 확인 네트워크 연결 상태를 확인하고 서버와 통신이 가능한지 확인합니다.
SSH 키 기반 인증 설정이 제대로 되었는지 확인 키 쌍이 제대로 생성되었는지, 공개 키가 서버에 올바르게 추가되었는지 확인합니다.
SSH 클라이언트에서 키 파일의 경로가 올바른지 확인 -i 옵션을 사용하여 키 파일의 경로를 지정했는지 확인합니다.

혹시 위 방법들을 다 시도해 봤는데도 SSH 연결이 안 된다면, 구글링이나 관련 커뮤니티에 도움을 요청하는 것도 좋은 방법이에요. 다른 사람들이 겪었던 문제와 해결 방법을 찾아볼 수 있을 거예요.

자주 묻는 질문 (FAQ)

Q1. SSH 키 기반 인증은 어떻게 사용하나요?

A1. SSH 키 기반 인증을 사용하려면 먼저 로컬 시스템에서 키 쌍을 생성하고, 공개 키를 서버의 ~/.ssh/authorized_keys 파일에 추가해야 합니다. 그 후 SSH 접속 시 비밀번호 대신 키 파일을 사용하면 됩니다.

Q2. SSH 포트를 변경하려면 어떻게 해야 하나요?

A2. SSH 서버 설정 파일(/etc/ssh/sshd_config)에서 Port 옵션을 변경하고 SSH 데몬을 재시작하면 됩니다. 변경된 포트 번호를 사용하여 SSH 클라이언트로 접속해야 합니다.

Q3. SSH 연결이 끊어지는 경우가 있는데, 어떻게 해결할 수 있나요?

A3. SSH 연결이 끊어지는 경우, 네트워크 연결 상태를 확인하거나 SSH 클라이언트와 서버의 설정을 확인해 보세요. 연결 시간 제한 설정을 변경하거나, 서버의 리소스 부족으로 인한 문제인지 확인하는 것도 좋은 방법입니다.

마무리

자, 이렇게 리눅스 SSH 설정 및 사용에 대한 모든 과정을 살펴봤어요. 이제 여러분도 SSH를 통해 안전하고 편리하게 리눅스 서버에 접속할 수 있게 되었답니다!

키워드 리눅스,SSH,원격접속,보안,서버관리,OpenSSH,Linux,SecureShell,네트워크,터미널,명령어,키기반인증,방화벽,firewall,sshd_config,systemctl,yum,ssh-keygen,ssh_config,IT,서버,IT관리,보안설정,네트워크보안,서버보안,리눅스서버,리눅스팁,IT팁,정보보안,해킹방지,원격관리,데이터보호,클라우드,AWS,Azure,GCP

 

관련 포스트 더 보기

2024.10.08 - [리눅스 강의] - 리눅스 시스템 로그 분석: 문제 해결 & 보안 강화 필수 가이드

 

리눅스 시스템 로그 분석: 문제 해결 & 보안 강화 필수 가이드

리눅스 시스템을 운영하다 보면, 뭔가 삐끗거리거나 예상치 못한 문제가 발생할 때가 있죠? 혹시 이런 상황에 놓이면 어떻게 해결해야 할지 막막하신가요? 🤔 바로 이럴 때 리눅스 시스템 로그

infolily.tistory.com

2024.10.09 - [리눅스 강의] - 리눅스 시스템 모니터링, 속도 저하 원인 잡기!

 

리눅스 시스템 모니터링, 속도 저하 원인 잡기!

리눅스 시스템을 운영하다 보면, 갑자기 느려지거나 예상치 못한 오류가 발생하는 경우가 있죠? 혹시 시스템이 과부하 상태인지, 어떤 프로세스가 자원을 많이 사용하는지 궁금할 때가 있을 거

infolily.tistory.com

2024.10.07 - [리눅스 강의] - 리눅스 완벽 정복! 초보자도 쉽게 시작하는 가이드

 

리눅스 완벽 정복! 초보자도 쉽게 시작하는 가이드

리눅스는 컴퓨터를 사용하는 사람이라면 한 번쯤 들어봤을 만큼 유명한 운영체제죠. 하지만 막상 리눅스가 뭔지, 어떻게 사용하는 건지 잘 모르는 분들도 많을 거예요. 혹시 여러분도 그중 한

infolily.tistory.com

2024.10.08 - [리눅스 강의] - 리눅스 부팅 과정, 궁금했던 모든 것!

 

리눅스 부팅 과정, 궁금했던 모든 것!

리눅스 부팅 프로세스는 컴퓨터 전원을 켜는 순간부터 리눅스 운영체제가 완전히 시작될 때까지의 과정을 말해요. 겉보기엔 엄청 빨리 지나가는 것 같지만, 사실은 BIOS/UEFI 초기화부터 사용자

infolily.tistory.com

2024.10.07 - [리눅스 강의] - 리눅스 터미널 정복! 기본 명령어 100가지 완벽 마스터

 

리눅스 터미널 정복! 기본 명령어 100가지 완벽 마스터

리눅스는 뭐라고 해야 할까요? 컴퓨터 과학자들이 만든, 뭔가 엄청나게 복잡한 운영체제? 왠지 모르게 어려워 보이는 녀석? 아니면… 개발자들이 애용하는 멋진 도구? 사실 리눅스는 이 모든 것

infolily.tistory.com