remote side unexpenctedly closed network connection 오류

접속한 링크 주소는 기간이 정해져 있거나 실제 주소 또한 주기적으로 변경될 수도 있습니다.

remote side unexpectedly closed network connection 메시지는 원격 서버가 네트워크 연결을 예기치 않게 닫았음을 의미합니다. 쉽게 말해 원격 서버에 연결하는 데 문제가 있는 것 인데 이는 다음과 같은 이유로 발생할 수 있습니다.

  • 서버에 문제가 있어 연결이 끊어짐
  • 인증 오류로 인한 연결 종료
  • 네트워크 장비의 문제로 연결이 끊김
  • 서버의 방화벽 또는 보안 설정으로 인해 연결이 차단됨

초보 사용자의 경우 가장 빈도가 높은 이유는 아무래도 인증 오류로 인한 연결 종료일 듯 합니다. 우선적으로 이 부분을 체크해 보는 것을 추천합니다. 인터넷에 연결이 되어있는 데 이렇게 된다면, 통상적으로 다음의 단계를 따라 문제의 원인을 찾아 가게 됩니다.

재시작

Putty를 종료한 후 다시 실행해 보세요. 가끔 문제가 간단하게 해결되기도 합니다.

SSH 서버 설정 확인

SSH 서버 설정을 확인하는 과정은 주로 서버의 운영 체제와 SSH 서버 소프트웨어에 따라 다릅니다. 일반적인 Linux 시스템에서 OpenSSH를 사용하게 되는데 이를 가정하면 다음의 과정을 따라 진행합니다.

참고: apt install openssh-server로 설치한 경우를 기준으로 안내하며 이 내용이 일반적입니다. 다만 명령의 일부가 사용환경에 따라 달라질 수 있습니다.

  1. 서버에 SSH로 접속하거나 직접 접근한 뒤 SSH 서버가 동작하는지 다음 명령으로 확인합니다. Active: active (running)이라고 표기되어야 정상 동작하는 것입니다.
    sudo systemctl status ssh
  2. SSH 설정 파일을 열기 위해 터미널에 다음 명령어를 입력합니다. vi 에디터를 이용해 sshd_config파일을 열게 됩니다.
    sudo vi /etc/ssh/sshd_config
  3. 이 파일에서는 다양한 설정을 확인하고 변경할 수 있습니다. 다음은 주요 설정 중 일부입니다:
    • Port: SSH가 사용하는 포트를 확인할 수 있습니다. 기본값은 22이고 별도 수정을 하지 않았다면 22로 되어 있어야 합니다.(접속시에도 22번 포트를 사용해야 합니다.)
    • PermitRootLogin: 루트 로그인 허용 여부
    • PasswordAuthentication: 비밀번호 인증 허용 여부
    • AllowUsers 또는 DenyUsers: 특정 사용자의 접근 허용 또는 거부
  4. 필요한 변경을 한 후, ESC 키를 누르고 :wq를 입력하여 vi 에디터를 저장하고 종료할 수 있습니다.
  5. SSH 서버를 재시작하여 변경 사항을 적용합니다. 터미널에 다음 명령어를 입력합니다:
    sudo systemctl restart ssh

참고: 이 설정은 서버와 관련된 설정이므로 주의 깊게 진행해야 하며, 서버의 관리자 권한이 필요합니다.

방화벽 확인

방화벽 또는 보안 소프트웨어가 Putty의 접속을 차단하고 있는지 확인해보세요. 방화벽 또는 보안 소프트웨어 설정에서 Putty의 접근을 허용하도록 설정해야 할 수 있습니다. 우분투에서 방화벽 설정을 변경하는 일반적인 방법은 다음과 같습니다.

UFW (Uncomplicated Firewall) 사용하는 경우

터미널을 열고 UFW가 활성화되어 있는지 확인합니다.

sudo ufw status

그러면 다음과 같이 UFW가 관리하는 허용된 (ALLOW) 및 차단된 (DENY) 규칙이 나열됩니다. 허용된 포트는 ALLOW로 표시됩니다. (다음은 간단한 예시로 참고만 합니다.)

Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)

포트가 개방되어 있지 않다면 다음 명령으로 SSH 포트를 허용합니다.

sudo ufw allow 22

방화벽 없이 iptables 사용하는 경우

직접 세팅하지 않았다면 iptables를 사용하지 않지만 혹시 모르니 필요한 경우 터미널을 열고 다음 명령으로 SSH 포트를 허용합니다. (초보 사용자는 위의 UFW 만으로 충분합니다.)

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

현재 열린 포트와 해당 포트에서 실행되고 있는 서비스 확인

현재 열린 포트와 해당 포트에서 실행되고 있는 서비스를 확인하려면, 다음 명령어를 사용할 수 있습니다.

sudo netstat -tuln

또는

sudo ss -tuln

이 명령어들은 TCP 및 UDP 포트에 대한 정보를 보여줍니다. 포트 22는 일반적으로 SSH 서비스에 사용됩니다.

위의 방법들은 대부분의 경우에 동작하지만, 특정 설정이나 보안 요구사항에 따라 달라질 수 있으므로, 필요한 경우 관련 문서를 참고하거나 시스템 관리자에게 문의하는 것이 좋습니다.

비밀번호 확인

접속 시 사용되는 비밀번호가 올바른지 확인하고 필요하다면 재설정해 보세요.

로그파일 확인

기본 설정에 문제가 없다면 PuTTY의 로그 파일을 확인하여 문제에 대한 자세한 정보를 찾아보세요.

  1. PuTTY를 열고, 세션을 시작하기 전에 Session 카테고리를 선택합니다.
  2. Logging 섹션으로 이동합니다.
  3. Session logging 옵션에서 로깅을 활성화하고 원하는 형식을 선택합니다. 일반적으로 All session output을 선택합니다.
  4. Log file name 필드에서 로그 파일의 경로와 이름을 지정합니다. 경로를 입력하지 않으면 PuTTY가 설치된 디렉터리에 저장됩니다.
  5. 변경 사항을 저장하고 세션을 시작합니다.

이제 문제가 발생할 경우, 지정한 로그 파일에서 자세한 정보를 찾을 수 있습니다. 로그 파일을 열어 오류 메시지나 경고를 확인하면 문제의 원인을 좀 더 정확하게 파악할 수 있을 것입니다.

기타

희박하지만 PuTTY의 최신 버전이 설치되어 있지 않은 경우 이런 문제가 발생할 수도 있습니다.


I hope this helps in some small way