You dont have javascript enabled! Please download Google Chrome!
맨 위로 스크롤

Could not connect to ‘host’ (port 22): Connection failed. 해결


Jneer - 2018-06-06 - 2 개의 댓글

xshell connection error

Could not connect to ‘host’ (port 22): Connection failed.


Xshell이나 PuTTY 등의 SSH 클라이언트에서 SSH 연결을 시도할 때 아래와 같이 메세지가 나올 때가 있습니다.

Connecting to 192.168.1.123:22...
Could not connect to '192.168.1.123' (port 22): Connection failed.

Type `help' to learn how to use Xshell prompt.

 

이는 서버에서 SSH 연결이 허용되지 않았을 때 발생하는 메세지입니다. SSH 클라이언트 마다 메세지가 다르게 나타날 수 있습니다.

SSH 접속을 위해서는 접속을 위한 클라이언트(Xshell)에서 연결을 시도하게 됩니다. 이 때 접속 대상 호스트에서 ‘SSH 연결’을 위한 준비가 되어있지 않을 경우 클라이언트에서 서버로 접속할 수 없습니다. SSH 접속을 위해 아래 두 가지 적용이 필요합니다.

  • 대상 서버에서 22번 포트를 열기
  • sshd 서비스가 구동되는지 확인

 

SSHD 서비스가 꺼져있을 경우


SSHD는 외부에서 SSH 프로토콜로 접속할 수 있도록 돕는 데몬입니다. 이 서비스가 서버에서 꺼져있다면 SSH 접속이 불가능해질 수 있으므로, 먼저 SSHD가 활성화되어 있는지 확인해 볼 필요가 있습니다.

먼저 ps -aef 프로세스 확인 명령을 사용하여 sshd가 현재 구동 중인지 확인할 수 있습니다. 아래 명령어로 어떠한 결과도 나오지 않는다면, 현재 sshd가 구동 중에 있지 않다는 의미입니다.

$ ps -aef | grep sshd

 

또는 아래와 같이 service sshd stauts 명령어 (또는 systemctl status sshd)로 현재 sshd 서비스의 자세한 상태를 파악할 수 있습니다. 아래와 같이 Active: inactive (dead) 로 되어있을 경우 sshd가 구동 중에 있지 않다는 의미입니다.

$ sudo service sshd status
Redirecting to /bin/systemctl status sshd.service
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since 수 2018-06-06 16:23:11 KST; 8min ago
     Docs: man:sshd(8)
           man:sshd_config(5)
  Process: 1094 ExecStart=/usr/sbin/sshd -D $OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 1094 (code=exited, status=0/SUCCESS)

 6월 02 19:57:26 localhost.localdomain systemd[1]: Starting OpenSSH server d...
 6월 02 19:57:26 localhost.localdomain sshd[1094]: Server listening on 0.0.0...
 6월 02 19:57:26 localhost.localdomain sshd[1094]: Server listening on :: po...
 6월 02 19:57:26 localhost.localdomain systemd[1]: Started OpenSSH server da...
 6월 06 16:21:14 localhost.localdomain sshd[58974]: Accepted password for te...
 6월 06 16:23:11 localhost.localdomain systemd[1]: Stopping OpenSSH server d...
 6월 06 16:23:11 localhost.localdomain sshd[1094]: Received signal 15; termi...
 6월 06 16:23:11 localhost.localdomain systemd[1]: Stopped OpenSSH server da...
Hint: Some lines were ellipsized, use -l to show in full.

위 명령어를 통해 sshd가 죽어있다는 것이 확인되었다면 아래 명령어로 sshd 서비스를 재시작해보세요.

$ sudo service sshd start
또는
$ sudo systemctl start sshd

 

방화벽으로 인해 접속이 차단 된 경우


만약 SSHD가 정상적으로 켜져있음에도 연결이 되지 않는다면 현재 방화벽에서 22번 포트가 열려있지 않은지 확인해 볼 필요가 있습니다.

대부분의 리눅스는 iptablesfirewalld의 방화벽 프로그램을 사용하며, 우분투의 경우 ufw를 사용합니다. 이를 이용하여 22번 tcp 포트를 열어주셔야 합니다.

아래 방법으로 22번 포트를 열 수 있습니다. 이 과정은 root 권한으로 진행합니다.

iptables를 기준으로는 아래와 같습니다.

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

firewalld는 아래와 같습니다.

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

마지막으로 ufw는 아래와 같습니다.

# ufw allow 22/tcp

 

위와 같이 방화벽을 열어주면 대부분 연결에 성공할 것입니다.

때때로 SSH 접속 포트를 변경해놓았을 가능성도 있으므로 이 경우에는 서버 관리자에게 문의해보아야 합니다.

 

SSH 서버가 아예 설치되지 않은 경우


원격 호스트에 SSH 서버가 설치되지 않았을 때에도 문제가 발생할 수 있습니다. 이 경우 역시 클라이언트가 알아차리지 못하므로 서버에서 확인해 볼 필요가 있습니다.

rpm을 이용하여 확인하였다면 아래와 같습니다.

$ rpm -qa openssh
openssh-7.4p1-16.el7.x86_64

yum list (또는 dpkg -l | grep ssh)를 이용하여 확인하였다면 아래와 같습니다.

$ yum list openssh
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.kakao.com
 * extras: mirror.kakao.com
 * updates: mirror.kakao.com
Installed Packages
openssh.x86_64                      7.4p1-16.el7                       @anaconda

그런데 위와 같이 결과가 나오지 않는다면 해당 서버에 sshd가 설치되지 않을 가능성이 있습니다.

 

아래 명령어로 ssh 서버를 설치해야 합니다.

$ sudo yum install openssh-server
또는
$ sudo apt install openssh-server

 

관련 포스트

2 개의 댓글

  1. 김수진

    Xshell로 ssh에 접속을 시도 하려고 합니다.
    위 방법대로 하려고 하는데 명령어를 Xshell에 입력하면 접속이 안된다는 말이 계속 반복되는데
    혹시 Xshell이 아니라 다른곳에 입력하는 건가요??

    • 안녕하세요. 블로그에 찾아주셔서 감사드립니다.
      Xshell의 경우 원격지에서 연결할 수 있도록 돕는 프로그램이기에 접속이 불가능한 것입니다.
      아래 명령어들은 실제 서버의 터미널 환경에서 입력해야하므로, 따라서 실제 서버에 접속하지 못하면 위 에러가 해결되지 않습니다.

      추가로 Xshell에서 세션(SSH, TELNET 등)에 접속하지 않은 상태에서는 SSH 명령어가 아닌 로컬 명령어만 지원됩니다. 로컬 셸에서 help 를 치면 관련 명령어가 보일 것입니다.
      감사합니다.

댓글 달기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

error: 경고: 콘텐츠가 보호되고 있습니다. 복사 및 무단 사용을 금지합니다.