SSH 서버의 연결 시간 종료


11

openssh-server를 설정하려고하는데 연결에 문제가 있습니다. 포트를 비표준 (57757)으로 변경 한 다음 라우터를 해당 포트로 전달하도록 설정했습니다. 내 LAN에서는 포트 57757을 사용하여 내 컴퓨터로 잘 ssh 할 수 있지만 WAN에서는 그렇게 할 수 없습니다.

LAN 외부에 있고 잘못된 포트로 컴퓨터에 액세스하려고하면 즉시 "연결 거부"메시지가 나타납니다. 그러나 올바른 포트를 사용하면 중단 된 다음 시간 종료됩니다.

문제를 디버깅하려면 어떻게해야합니까? 나는 traceroute를 시도했지만 유용한 것을 말하지 않았다.

편집 : 내 문제는 내 라우터가 내부적으로 WAN IP를 통한 라우터 액세스를 지원하지 않는다는 것을 깨달았습니다. 나는 다른 서버에 ssh'd하고 다시 들어 와서 잘 작동했습니다.


수신 대기중인 포트 옆에 아무것도 변경하지 않았습니까?
guntbert

@guntbert Nope. 루프백에 문제가 될 수 있습니까?
Ci3

루프백? 기계 자체에서만 시도 했습니까? LAN 내부에 테스트 할 다른 장치가 있습니까?
guntbert

@guntbert 다른 컴퓨터에서 시도했지만 LAN 내부에는 아무런 문제가 없습니다.
Ci3

"마지막 수단"에 대한 나의 생각 : sudo apt-get purge openssh-server다시 설치하고 (따라서 구성에 발생할 수있는 모든 것을 제거합니다) 22-> 22를 전달하도록 라우터를 재구성하십시오.
guntbert

답변:


11

일반적으로 이것은 LAN의 잘못된 IP 주소로 포트를 전달했음을 의미합니다.

귀하의 NAT 라우터는 포트 57757에 들어오는 트래픽을 수신하고 LAN의 특정 IP 주소와 포트로 전송합니다.

기본적으로 우분투는 방화벽으로 들어오는 연결 시도를 필터링하지 않습니다. 따라서 우분투에서 방화벽 설정을 변경하지 않으면 1에서 65535 사이의 모든 TCP 포트에 대한 연결을 열려고 시도하면 다음 중 하나가 수행됩니다.

  • 포트가 열려 있으면 연결을 수락하십시오
  • 포트가 닫힌 경우 연결 시도 거부

포트가 방화벽에 의해 필터링 된 경우 연결 시도에 대한 응답이없는 것입니다. 그러나:

  • 당신은 방화벽 설정을 변경하지 않는 한 (예를 들면, ufw, iptables), 더 포트를 필터링하지 있습니다
  • 어떤 경우에도 LAN의 포트 22에 연결할 수 있으므로 열려 있습니다.

NAT 라우터 를 사용하여 존재하지 않는 컴퓨터로 포트를 전달하면 해당 포트의 들어오는 트래픽을 존재하지 않는 컴퓨터로 보냅니다. 즉, 포트를 블랙홀 로 보냅니다 . 효과적으로 삭제됩니다.

그것은 당신이 묘사 한 상황을 정확하게 유발합니다. 따라서 포트가 LAN의 올바른 IP 주소로 전달되도록하여이 문제를 해결할 수 있습니다.

그게 문제가 아닌 것으로 판명되면 ...

그런 다음 문제 해결을 수행해야합니다.

  1. LAN쪽에 지정된 포트가 올바 릅니까? 즉, SSH 서버 구성을 변경하지 않았다고 가정하면 WAN 쪽의 포트 ​​57757 이 OpenSSH 서버의 포트 22 로 전달되도록 설정되어 있습니까? (이것을 다시 확인하고 싶을 수도 있습니다.)

  2. 선택한 특정 포트 (57757)에 문제가있을 수 있습니다. 다른 것을 사용 해보고 더 잘 작동하는지 확인하십시오.

    그렇지 않은 경우이 지침을 계속 진행하면 다시 변경하거나 아래의 "57757"을 새 번호로 바꾸십시오.

  3. OpenSSH 서버를 다시 시작하십시오. 네트워크 문제가있는 경우 도움이 될 수 있습니다. 그래도 문제가 해결되지 않으면 라우터와 케이블 / DSL / ISDN 모뎀을 다시 시작하십시오.

    어떤 이유로 든 세 장치를 모두 다시 시작할 수없는 경우 가능한 모든 장치를 다시 시작하는 것이 좋습니다. OpenSSH 서비스를 다시 시작할 수없는 경우 최소한 서비스를 다시 시작할 수 있으며이 문제를 해결할 가능성이 더 높은 경우 인터페이스를 중단 한 후 다시 시작하십시오.

    OpenSSH 서버를 다시 시작하려면 다음을 수행하십시오.

    sudo restart ssh
    

    네트워크 인터페이스를 끄려면 먼저 어떤 인터페이스가 켜져 있는지 확인하십시오.

    ifconfig
    

    일반적으로 단일 이더넷 카드 및 / 또는 단일 무선 카드가있는 시스템의 경우 이더넷이 eth0있고 무선이 wlan0입니다.

    유선 이더넷 연결이 중단 된 후 다시 시작하려는 경우 다음을 실행하십시오.

    sudo ifdown eth0
    

    그런 다음 다음을 실행하십시오.

    sudo ifup eth0
    

    또는 다음을 실행할 수 있습니다.

    sudo ifconfig eth0 down
    

    뒤에 :

    sudo ifconfig eth0 up
    

    머신이 NetworkManager를 사용하여 OpenSSH 서버가 실행중인 인터페이스를 관리하는 경우에도 위의 방법을 시도하는 것이 좋지만 NetworkManager에서 연결을 끊었다가 다시 연결할 수도 있습니다.

    이더넷 연결의 경우 케이블 연결을 끊었다가 다시 연결해보십시오. 무선 연결의 경우 하드웨어 스위치 (있는 경우)로 끄고 다시 켜보십시오.

    이상한 일이 일어나고 있으며이 중 어느 것도 오래 걸리지 않습니다. 더 많은 문제 해결 단계를 수행하기 전에 철저히 살펴 보는 것이 좋습니다.

  4. WAN 쪽에서 어떻게 액세스하려고합니까? LAN 에서 컴퓨터 사용 하여이 작업을 수행하는 경우 (LAN에서 라우터의 WAN IP에 연결하기 만하면) 일부 라우터에서만 지원됩니다. 결국, 라우터의 역할은 트래픽을 한쪽에서 자신으로 라우팅하지 않고 WAN과 LAN 쪽에서 트래픽을 라우팅하는 것입니다. 많은 가정 / 사무실 라우터에이 기능이 있지만 LAN 내부에서 WAN IP의 전달 포트에 대한 연결 지원은 실제로 규칙이 아니라 예외입니다.

    따라서 WAN 쪽의 호스트에서 포트 포워드를 테스트하지 않으면 그렇게해야합니다. 이에 대한 옵션은 다음과 같습니다.

    • WAN 쪽에서 자신을 연결하십시오. 예를 들어 학교, 직장, 친구 집 등의 원격 컴퓨터에 대한 SSH 액세스와 같은 컴퓨터에 액세스 할 수있는 경우에 작동합니다.

    • 라우터와 인터넷 연결을 제공 하는 것 사이에 테스트 머신 연결하십시오. 이더넷 포트가있는 케이블 / DSL / ISDN 모뎀이 있고 라우터가 연결되어 있으면 스위치 를 모뎀에 연결하고 라우터를 스위치 에 연결할 수 있습니다 . 컴퓨터를 스위치에 연결하십시오. 먼저 해당 컴퓨터가 인터넷에 액세스 할 수 있는지 확인하십시오. 요즘 많은 ISP가 두 개 이상의 개별 IP 주소를 제공합니다. 그렇지 않은 경우 라우터의 설정 페이지로 이동하여 WAN IP 및 WAN 서브넷 마스크를 확인한 다음 동일한 서브넷 내에있는 스위치 연결 머신에 IP 주소를 정적으로 할당하십시오.

      이 방법에는 몇 가지 단점이 있습니다. 아파요! 또한 스위치에 연결된 테스트 시스템이 인터넷에 액세스 할 수 있도록 ISP가 네트워크를 잘못 구성 할 수도 있습니다. (ISP가 하나 이상의 WAN IP ISP가 사용자에게 할당 한 테스트 시스템에 대한 WAN IP를 선택했을 때 ISP가 실제 WAN 호스트 간의 트래픽을 차단 / 삭제해야합니다. 그러나 일부 ISP는 이상한 관행을 가지고 있으므로 누가 아는가?) 이것이 발생하면 다른 사람에게 심각한 문제를 일으키지 않을 것입니다. 그러나 구독 범위를 넘어서 추가 액세스 권한을 얻으려는 시도로 여겨 질 수 있으며, 더 중요한 것은 다른 사용자가 동일한 IP를 사용하는 경우 연결을 방해 할 수 있습니다. 따라서이 방법을 사용하려면, 테스트 머신에서 인터넷에 액세스하려고 시도하지 말고, 테스트 머신이 인터넷에 액세스 할 수 있으면 즉시 중지하고 ISP에서 금지하거나 조언 한 경우에는 시도하지 마십시오. (네트워크 관리자에게 먼저 문의하지 않고 라우터의 WAN 쪽이 사무실 LAN 인 경우에는 사용하지 마십시오. ISP가 아니며 원치 않는 액세스를 방지하기 위해 리소스가 제공된다는 가정은 없습니다.)

      이 기법에는 때때로 더 적합한 변형이 있습니다. IP 주소, 서브넷 마스크, 게이트웨이 (라우터)의 IP 주소 WAN에 있음 - 라우터 아마의 연결 정보를 얻는다 이 DNS 서버에 대해 뭔가 정보를 보낼 위치를 알 수없는 경우 사용을 - 당신의에서 케이블 / DSL / ISDN 모뎀을 통한 DHCP를 통한 ISP. 따라서 WAN 측 테스트 결과를 의미있게하기 위해 라우터를 모뎀에 연결해야 필요한 구성을 제공 할 수 있습니다. 그러나 라우터는 실제로 WAN 측의 네트워크에 연결되어있는 한이 정보를 기억합니다. 따라서 라우터, 모뎀 및 테스트 시스템을 연결할 수 있지만 신속하고스위치가 연결되어 있는지 확인하는 것 외에 테스트 기기로 작업을 수행하기 전에 모뎀을 분리하십시오.

    • 인터넷에서 무료 서비스를 사용하여 포트를 테스트하십시오. 라우터의 WAN 인터페이스와 인터넷 (위) 사이에 테스트 시스템을 삽입하는 것이 매우 관여하기 때문에 ISP에 의해 차단되어 포트에 액세스 할 수없는 경우에도 포트에 액세스 가능한 것으로 표시되므로 LAN 측의 라우터 WAN IP)-일반적으로 웹 기반 포트 검색 서비스를 사용하는 것이 좋습니다.

      많은 포트 스캔 서비스가 있습니다. (일부 사람들은 액세스를 용이하게하기 보다는 차단 하려고한다는 생각으로 "방화벽을 확인하십시오"라는 문구를 사용합니다. 이것은 하나입니다. 그 중 하나를 사용하기로 선택한 경우 진행을 클릭 하고 텍스트 상자에 57757을 입력 한 다음 지정된 사용자 정의 포트 프로브 사용을 클릭 하십시오 . 서버를 실행 하기 위해 "열기" 를 원합니다 . "Closed"는 포트에 액세스 할 수 있지만 서버가 실행 중이 아니므로 연결 시도가 거부되었음을 의미합니다. "스텔스"는 포트에 액세스 할 수 없음을 의미합니다. 마치 머신이없는 것처럼 (또는 머신이없는 곳으로 포트가 전달 된 것처럼)입니다.

  5. 인터넷에서 실제로 액세스 할 수 없다고 판단했습니다. 잠재적으로 당신은 (이상적으로 WAN 쪽에서) 스캔하여 세부 정보를 얻을 수 있지만 종종 유용한 정보를 제공하지는 않습니다.

    이를 수행하려면 WAN 측에서 다음을 실행할 수 있습니다.

    sudo nmap -sS -sV -p57757 -vv WAN-IP

    포트가 필터링 된 것으로 표시되면 전송 된 패킷이 아무 곳에도 없거나 (또는 ​​도중에 차단 / 삭제됨) 확인합니다.

  6. WAN에 노출 된 포트에서 서버가 실제로 수신하는 포트와 다른 포트에서 문제가 발생하는지 확인해야합니다. WAN의 포트 55757을 LAN 시스템의 포트 22로 전달하면 문제가 해결 될 수 있지만 서버와 클라이언트의 관점에서 포트 번호가 같다고 가정합니다.

    라우터를 통해 포트 22를 전달할 수 없습니다. ISP가 해당 포트를 차단했을 수 있습니다. 그러나 그렇게 할 수 있다면 그렇게하십시오!

    그렇지 않으면 OpenSSH 서버가 실제로 포트 57757에서 청취 하도록 할 수 있습니다 .

    이를 수행하려면 서버 구성 파일을 백업하십시오.

    cd /etc/ssh
    sudo cp sshd_config sshd_config.old
    

    그런 다음 편집하십시오.

    gksu gedit sshd_config
    

    또는 머신에 GUI가없는 경우 콘솔 텍스트 편집기를 사용하십시오.

    sudo nano -w sshd_config
    

    파일 상단 근처에이 텍스트 블록이 나타납니다.

    # What ports, IPs and protocols we listen for
    Port 22
    # Use these options to restrict which interfaces/protocols sshd will bind to
    #ListenAddress ::
    #ListenAddress 0.0.0.0
    Protocol 2
    # HostKeys for protocol version 2
    HostKey /etc/ssh/ssh_host_rsa_key
    HostKey /etc/ssh/ssh_host_dsa_key
    HostKey /etc/ssh/ssh_host_ecdsa_key
    #Privilege Separation is turned on for security
    UsePrivilegeSeparation yes
    

    대신 Port 22상단 의 줄을 변경하십시오 Port 57757.

    • 포트를 변경하지 않고 추가 할 수 있습니다 . 그래도 가장 간단한 구성으로 테스트하는 것이 좋습니다.

      man sshd_configOpenSSH 서버 구성에 대한 자세한 내용을 참조하십시오 .

    파일을 저장하고 텍스트 편집기를 종료 한 후 다음을 사용하여 SSH 서버를 다시 시작하십시오.

    sudo restart ssh
    

    이제 라우터의 포트 포워드를 변경하여 포트 57757이 OpenSSH 서버의 포트 57757 (22가 아님)로 전달되고 인터넷에서 액세스 할 수 있는지 확인하십시오.

  7. 여전히 작동하지 않으면 Ubuntu의 방화벽이 실제로 LAN 외부에서 발생하는 트래픽을 차단하고 있는지 확인하십시오.

    (이 방법으로 직접 구성하지 않은 경우는 아니지만 모든 설정이 올 바르고 위의 단계 중 어느 것도 문제에 대한 정보가 없으면 확인할 가치가 있습니다.)

    운영:

    sudo iptables -L
    

    기본적으로 우분투에서는 다음과 같이 출력됩니다.

    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination
    

    이것은 방화벽을 실행하지 않는 것과 동등한 간단한 허용 정책입니다. (실제로 netfilter 방화벽 모듈이 커널로 컴파일되지 않은 경우 시스템은 위의 설정과 동일한 방식으로 작동하지만 설정 iptables을 쿼리 하는 명령 netfilter은 물론 작동하지 않습니다.)

    구성이 그렇게 보이지 않으면, man iptables수행중인 작업을 파악하고 /하거나 질문을 편집 (또는 비슷한 문제를 가진 다른 사람인 경우 새 질문을 게시)을 포함하여 포함 시키십시오. 그들. 잠재적으로 당신,주의하시기 바랍니다 iptables규칙은 구성에 대한 중요한 정보를 공개 할 수 있습니다. 실제로, 이것은 차단 된 특정 호스트에 대한 규칙을 제외하고 또는 구성이 매우 나쁘거나 안전하지 않은 경우를 제외하고는 일반적으로 그렇지 않습니다. 일반적으로이 정보가 공격자, 특히 NAT 라우터 뒤에있는 가정 / 사무실 LAN 은 최소입니다.


1

LAN 내부에서 작동하므로 서버 설정이 올바른 것 같습니다. 당신은에서 전달하도록 라우터를 알려야합니다 포트 당신이에 사용하고자하는 외부 포트로 컴퓨터에 57757 . 이 경우
A traceroute는 사용되지 않습니다.


좋아, 나는 기계 쪽이 괜찮다고 생각했다. 예, 라우터를 57757에서 22로 전달하도록 설정했지만 같은 문제가 있습니다. sshd_config는 포트 22에서도 설정됩니다.
Ci3

그건 아마해야합니다 : '이 포트는 당신이에 사용하고자하는 외부 (예. 57757 포트) (22)컴퓨터 .' 그것은 대중 당신이 모호 필요는 포트 주소.
david6

이 경우에 정확하지 않습니다
-Chris
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.