리눅스 오류ㅠㅠ
scp를 사용해 cmd에서 윈도우에 있는 공개키를 리눅스에 전송하려고 하는데
ssh connect to host port 22 connection refused
lost host(?)라는 오류가 뜨는데 원인이 뭘까요ㅠㅠ
리눅스까지 핑은 잘갑니다 !
scp 는 내부적으로 SSH 통신을 기반으로 동작되고
위와 같은 SSH 접속 오류는 다양한 원인이 있을 수 있습니다.
(원인 1) 리눅스 서버에서 ssh 서버 실행이 안되고 있는 경우 입니다.
CentOS 접속하셔서 ssh 서버 프로그램이 실행중인지 아래처럼 확인하고
만약 실행중이지 않다면 설치 여부를 확인해서 ssh 서버 프로그램을 설치하신후 scp 를 재시도 해보시기 바랍니다.
(원인 2) CentOS 리눅스 서버 내부의 SSH 서버 프로그램 Port 번호 설정이 22 번이 아닌 경우
위 처럼 Port 22 번 (기본 포트번호 설정)이 안되어 있거나 다른 포트 번호로 되어있다면 scp 명령어를 실행할때
아래 처럼 -P 옵션을 사용해서 포트번호를 따로 지정하셔야합니다. (예시: SSH 포트번호 1122 인 경우)
그리고 현재 리눅스 서버 안에서 SSH 서버 프로그램이 어떤 포트 번호를 사용중인지 확인하려면 아래와 같이 확인도 가능합니다. (예시: 기본 포트번호 22번 사용중임을 확인 가능)
(원인 3) 방화벽(Firewall) 차단으로 인한 접속 문제인 경우
예를 들어 방화벽 프로그램이 동작중인지 확인하고 간단한 방법으로는 아래와 같이 중단(disable) 시킬 수 있고 방화벽 설정을 통해서 SSH 포트번호 차단에 대한 규칙을 삭제 할 수 있습니다.
위는 방화벽 프로그램 ufw 의 경우이고 아래는 firewalld 경우의 예시 입니다.
firewall-cmd 명령어 통해서 현재 설정을 확인하고 ssh 서비스 에 대해서 접속 허용을 아래와같이 할 수 있습니다.
또한 아래 처럼 리눅스 커널 netfilter 기반으로 동작하는 iptables 명령어 통해서 현재 22번 포트번호가 차단되어있는지 확인 할 수 있고 차단 되어있다면 아래 처럼 보일 수 있습니다.
이때 해당 SSH 포트번호(예: 22번)에 대해서 허용하고 싶다면 아래와 같은 명령어가 필요 할 수 있습니다.
(원인 4) 네트워크 통신 연결 자체가 안되는경우
위의 경우는 질문자님께서 이미 ping 명령어 통해서 확인하셨기 때문에 재확인이 필요는 없겠지만
참고로 네트워크 통신은 가능해도 리눅스 서버에서 ICMP 패킷을 차단해놨다면 ping 의 response 응답이 안올 수있습니다. 예를 들어서 아래 처럼 google 웹 서버에 ping 을 전송한다면 정상적으로 ICMP 패킷 응답(response)을 받을 수 있지만 naver 웹서버 같은 경우는 ICMP 패킷을 보통 차단해두기 때문에 ICMP 패킷 응답(response)을 받을 수 없어서 네트워크 통신이 안된다고 오해 할 수있으니 주의가 필요합니다.
(1) ICMP 통신 정상 동작 예시
(2) ICMP 통신 응답(response) 없는 경우
위 4가지 원인을 기준으로 확인 부탁 드리고 추가적으로 질문있으시다면
카카오톡 채널 "리얼리눅스" https://pf.kakao.com/_sxevPT
새로 쌓는 '진짜' SW 기본기
pf.kakao.com
문의 주시면 감사하겠습니다.
위와 관련된 리얼리눅스 강의로는 "네트워크 완전정복" 수업이 있습니다!
https://reallinux.co.kr/course/se_network
직장인을 위한 리눅스교육
reallinux.co.kr