Linux에서 SSH “연결 거부됨” 오류를 수정하는 방법
SSH는 네트워크를 통해 원격 시스템에 안전하게 액세스하고 관리할 수 있는 네트워크 프로토콜입니다. SSH를 통해 원격 시스템에 연결하는 동안 “연결 거부” 오류가 발생했을 수 있습니다. 이 문제를 경험하는 것은 특히 시스템 관리자이고 긴급하게 원격 시스템에서 일부 작업을 수행해야 하는 경우 실망스러울 수 있습니다.
SSH “연결 거부” 오류가 발생할 수 있는 몇 가지 원인과 이를 해결하는 방법을 살펴보겠습니다.
1. SSH 서버가 설치되어 있는지 확인
“연결 거부” 오류의 가능한 원인 중 하나는 원격 시스템이 SSH 서버를 실행하고 있지 않기 때문입니다. SSH 서버가 없으면 머신은 들어오는 SSH 연결을 허용하지 않으며 원격으로 액세스할 수 없습니다.
따라서 오류 문제를 해결하는 첫 번째 단계는 SSH 서버가 원격 시스템에 설치되어 있는지 확인하는 것입니다. 다음 명령을 사용하여 SSH 서버 설치를 확인하십시오.
Debian 기반 배포판:
dpkg --list | grep ssh
RHEL 기반 배포:
yum list installed | grep ssh
오픈수세에서:
zypper search -i | grep ssh
아치 기반 배포:
pacman -Q | grep ssh
SSH 서버가 원격 시스템에 설치되어 있으면 출력에 목록이 표시됩니다. 그렇지 않으면 SSH를 통해 액세스하려는 원격 시스템에 OpenSSH 서버를 설치해야 합니다. OpenSSH는 원격으로 시스템에 액세스하고 제어하기 위한 SSH 도구의 오픈 소스 버전입니다.
OpenSSH 서버를 설치하려면 다음 명령을 사용하십시오.
Debian 기반 배포판:
sudo apt install openssh-server
RHEL 기반 배포:
sudo yum install openssh-server
오픈수세에서:
sudo zypper install openssh
아치 기반 배포:
pacman -S openssh
2. SSH 서비스 상태 확인
“연결 거부” 오류가 발생하는 또 다른 이유는 SSH 서비스가 비활성화되었거나 원격 시스템에서 실행되고 있지 않기 때문일 수 있습니다. SSH 서버가 설치되었다고 확신하면 두 번째로 확인해야 할 것은 서버의 상태입니다.
sudo systemctl status sshd
서비스가 실행 중이면 출력에 활성(실행 중) 으로 표시 됩니다. 그렇지 않으면 inactive (dead) 와 같은 것을 볼 수 있습니다 .
SSH 서버가 실행 중이 아니면 다음 명령을 사용하여 수동으로 시작할 수 있습니다.
sudo systemctl start sshd
다음을 사용하여 서비스가 부팅 시 자동으로 시작되도록 설정할 수도 있습니다.
sudo systemctl enable sshd
3. SSH 포트 확인
기본적으로 SSH 서버는 포트 22에서 실행됩니다. 그러나 기본 포트를 변경할 수 있습니다. 따라서 SSH “연결 거부” 오류가 발생하면 SSH 서버가 다른 포트에서 실행되는 동안 기본 포트 22에서 SSH 서버에 연결을 시도했기 때문일 수 있습니다.
grep과 함께 netstat 명령을 사용하여 SSH 서버가 수신 대기 중인 포트를 찾을 수 있습니다.
sudo netstat -plntu | grep ssh
다음 명령을 사용하여 sshd_config 파일 에서 SSH 포트를 찾을 수도 있습니다 .
grep port /etc/ssh/sshd_config
올바른 SSH 포트를 식별한 후 해당 특정 포트를 사용하여 원격 시스템에 연결해 보십시오.
4. 시스템 방화벽 확인
대부분의 연결 문제는 컴퓨터의 방화벽이 일부 포트나 서비스를 차단하기 때문에 발생합니다. 원격 시스템에 SSH 서버가 설치되어 실행 중인 경우 다음 단계는 방화벽을 확인하는 것입니다.
방화벽이 연결을 차단하고 있는지 확인하려면 다음 명령을 사용하여 방화벽을 일시적으로 비활성화하십시오.
Debian 및 Arch 기반 Linux 배포판:
sudo ufw disable
RHEL 기반 배포 및 openSUSE에서:
sudo systemctl disable firewalld
방화벽을 비활성화한 후에도 오류가 나타나지 않으면 방화벽이 연결을 차단하고 있음을 의미합니다. 이 경우 방화벽을 다시 활성화하고 SSH를 허용하는 규칙을 추가하십시오.
Debian 및 Arch 기반 Linux 배포판에서 다음 명령을 사용하여 UFW 방화벽에서 SSH를 허용합니다.
sudo ufw allow ssh
또는 방화벽의 포트 번호로 SSH를 허용할 수도 있습니다. SSH 서버가 포트 5555를 사용하고 있다고 가정하면 다음 명령을 사용하여 방화벽에서 허용합니다.
sudo ufw allow 5555
규칙이 성공적으로 추가되었는지 확인하려면 UFW 상태를 확인하십시오.
sudo ufw status
RHEL 기반 배포 및 openSUSE에서 다음 명령을 사용하여 방화벽에서 SSH를 허용합니다.
sudo firewall-cmd --permanent --add-service=ssh
포트 번호로 SSH를 허용하려면 다음 명령을 사용하십시오.
sudo firewall-cmd --permanent --add-port={port}/tcp
포트 4444에서 실행되는 SSH 서버의 경우 명령은 다음과 같습니다.
sudo firewall-cmd --permanent --add-port=4444/tcp
방화벽에서 규칙이 성공적으로 추가되었는지 확인하려면 다음을 실행하십시오.
sudo firewall-cmd --list-all
5. IP 주소 충돌 해결
또한 SSH 서버 IP가 네트워크에서 다른 시스템의 IP와 충돌하여 SSH “연결 거부” 오류가 발생할 가능성도 있습니다. 이는 네트워크의 두 시스템이 동일한 IP 주소를 가지고 있다고 주장하여 IP 충돌이 발생할 때 발생합니다.
네트워크에 IP 충돌이 있는지 확인하려면 다음과 같이 arp-scan 도구를 사용하십시오.
arp-scan [network-id]
IP 충돌이 있는 경우 출력에 중복 IP 주소가 표시됩니다. 아래 스크린샷은 네트워크에서 IP 충돌의 예입니다.
IP 충돌을 피하려면 DHCP 풀 주소와 겹치는 정적 IP 주소가 장치에 없는지 확인하십시오.
보너스 팁: 자세한 정보 표시 모드에서 SSH 실행
SSH 오류가 발생할 때마다 자세한 정보 표시 모드에서 ssh 명령을 실행하여 문제를 추적해 보십시오. 자세한 정보 표시 모드에서 SSH를 실행하려면 다음과 같이 -vvv 옵션과 함께 ssh 명령을 사용하십시오 .
ssh -vvv username@ip_address
세부 정보 표시 모드에서는 연결의 각 단계에서 문제가 있는 위치를 이해하는 데 도움이 되는 디버깅 메시지를 볼 수 있습니다.
Linux에서 SSH “연결 거부됨” 오류 문제 해결
SSH 연결 오류의 잠재적 원인을 식별하고 제안된 솔루션을 구현하면 SSH “연결 거부” 오류를 해결할 수 있습니다. 이러한 단계 외에도 올바른 IP 주소에 연결하고 올바른 로그인 자격 증명을 사용하고 있는지 확인하십시오.
원격 연결을 보다 안전하게 하기 위해 Linux에서 SSH에 대한 2단계 인증을 설정할 수 있습니다.
답글 남기기