JooTC
xshell connection error

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

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

 

구독
알림
guest

4 Comments
Inline Feedbacks
모든 댓글 보기
김수진
김수진
5 년 전에

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

초보자
초보자
5 년 전에

윈도우 cmd 관리자 권한에서 ps -ef | grep sshd 라고 쳤는데 내부 또는 외부 명령, 실행할 수 있는 프로그램,. 또는 배치파일이 아니라고 하는데요 어떻게 접근해야 하나요 ….?

4
0
이 포스트에 대한 의견을 남겨주세요!x