Hết thời gian kết nối cho máy chủ ssh


11

Tôi đang cố gắng thiết lập máy chủ openssh, nhưng tôi gặp một số vấn đề khi kết nối. Tôi đã thay đổi cổng thành một cái gì đó không chuẩn (57757) và sau đó đặt bộ định tuyến của mình để chuyển tiếp đến cổng đó. Trên mạng LAN của tôi, tôi có thể ssh vào máy của mình tốt bằng cổng 5757, nhưng không thể làm như vậy trên mạng LAN.

Nếu tôi ở ngoài mạng LAN và tôi cố truy cập vào máy của mình bằng một cổng không chính xác, tôi ngay lập tức nhận được thông báo "từ chối kết nối". Tuy nhiên, với cổng chính xác, nó chỉ bị treo và sau đó hết thời gian.

Tôi có thể cố gắng gì để gỡ lỗi vấn đề? Tôi đã thử một traceroute, nhưng nó không cho tôi biết bất cứ điều gì hữu ích.

EDIT: Tôi nhận ra rằng vấn đề của tôi là bộ định tuyến của tôi không hỗ trợ truy cập nó bằng mạng IP IP trong nội bộ. Tôi đã chuyển đến một máy chủ khác và quay lại và nó hoạt động tốt.


Bạn đã thay đổi bất cứ điều gì bên cạnh cổng mà nó đang lắng nghe?
guntbert

@guntbert Không. Nó có thể là một vấn đề với loopback?
Ci3

loopback? bạn chỉ thử từ máy? Bạn có thiết bị nào khác trong mạng LAN để kiểm tra không?
guntbert

@guntbert Tôi đã thử nó với một máy khác và không có vấn đề gì trong mạng LAN.
Ci3

Ý tưởng của tôi về "giải pháp cuối cùng": sudo apt-get purge openssh-serversau đó cài đặt lại nó (vì vậy chúng tôi loại bỏ mọi thứ có thể xảy ra với cấu hình) và cấu hình lại bộ định tuyến của bạn để chuyển tiếp 22-> 22.
guntbert

Câu trả lời:


11

Thông thường, điều này có nghĩa là bạn đã chuyển tiếp cổng đến địa chỉ IP sai trên mạng LAN.

Bộ định tuyến NAT của bạn nhận được lưu lượng truy cập đến trên cổng 5757 và gửi nó đến một địa chỉ IP cụ thể và cổng trên mạng LAN.

Theo mặc định, Ubuntu không lọc các nỗ lực kết nối đến với tường lửa. Vì vậy, trừ khi bạn thay đổi cài đặt tường lửa trong Ubuntu, một nỗ lực mở kết nối tới bất kỳ cổng TCP nào, từ 1 đến 65535, sẽ:

  • chấp nhận kết nối, nếu cổng được mở
  • từ chối nỗ lực kết nối, nếu cổng bị đóng

Nếu các cổng được lọc bởi tường lửa, thì bạn sẽ nhận được những gì bạn đang thấy - không có phản hồi nào cho nỗ lực kết nối. Nhưng:

  • trừ khi bạn đã thay đổi các thiết lập tường lửa (ví dụ ufw, iptables), không có cổng được lọc,
  • trong mọi trường hợp, bạn có thể kết nối với cổng 22 trên mạng LAN, vì vậy nó sẽ mở.

Khi bạn chuyển tiếp một cổng tới một máy không tồn tại với bộ định tuyến NAT, nó sẽ gửi lưu lượng đến trên cổng đó đến máy không tồn tại, nghĩa là nó sẽ gửi nó vào một lỗ đen ; nó được giảm hiệu quả.

Điều đó gây ra chính xác tình huống bạn mô tả. Vì vậy, rất có thể bạn có thể khắc phục điều này bằng cách đảm bảo rằng cổng đang được chuyển tiếp đến đúng địa chỉ IP trên mạng LAN.

Nếu điều đó hóa ra không phải là vấn đề ...

... sau đó bạn sẽ phải làm một số xử lý sự cố.

  1. Cổng được chỉ định cho phía LAN có đúng không? Đó là, giả sử bạn chưa thay đổi cấu hình của máy chủ SSH, cổng 5757 ở phía mạng WAN có được chuyển sang cổng 22 trên máy chủ OpenSSH không? (Bạn có thể muốn kiểm tra kỹ điều này.)

  2. Có thể có một số vấn đề với cổng cụ thể mà bạn đã chọn (57757). Hãy thử một cái khác và xem nếu nó hoạt động tốt hơn.

    (Nếu không, và bạn tiếp tục với các hướng dẫn này, hãy thay đổi lại hoặc thay thế "57757" bên dưới bằng số mới.)

  3. Hãy thử khởi động lại máy chủ OpenSSH. Điều đó có thể giúp đỡ nếu có vấn đề về mạng. Nếu điều đó không có ích, hãy thử khởi động lại bộ định tuyến và modem cáp / DSL / ISDN.

    Nếu vì lý do nào đó bạn không thể khởi động lại cả ba thiết bị, tôi khuyên bạn nên khởi động lại bất cứ điều gì bạn có thể. Nếu bạn không thể khởi động lại dịch vụ OpenSSH, ít nhất bạn có thể khởi động lại dịch vụ và (nhiều khả năng sẽ khắc phục điều này) đưa giao diện xuống và đưa nó trở lại.

    Để khởi động lại máy chủ OpenSSH:

    sudo restart ssh
    

    Để hạ giao diện mạng xuống, trước tiên hãy tìm hiểu giao diện của nó:

    ifconfig
    

    Thông thường, đối với một máy có một thẻ Ethernet và / hoặc một thẻ không dây duy nhất, Ethernet là eth0và không dây wlan0.

    Nếu kết nối Ethernet có dây là những gì bạn muốn gỡ xuống và khởi động lại, hãy chạy:

    sudo ifdown eth0
    

    Sau đó chạy:

    sudo ifup eth0
    

    Ngoài ra, bạn có thể chạy:

    sudo ifconfig eth0 down
    

    Theo dõi bởi:

    sudo ifconfig eth0 up
    

    Nếu máy đang sử dụng NetworkManager để quản lý giao diện mà máy chủ OpenSSH đang chạy, tôi vẫn khuyên bạn nên thử các cách trên, nhưng bạn cũng có thể thử ngắt kết nối và kết nối lại trong NetworkManager.

    Đối với kết nối Ethernet, hãy thử rút cáp và cắm lại. Đối với kết nối không dây, hãy thử tắt nó bằng công tắc phần cứng (nếu có) và bật lại.

    Một cái gì đó kỳ lạ đang diễn ra ở đây và không có gì trong số này mất nhiều thời gian - đáng để kỹ lưỡng trước khi thực hiện các bước khắc phục sự cố khó khăn hơn.

  4. Làm thế nào bạn đang cố gắng truy cập nó từ phía WAN? Nếu bạn đang sử dụng máy trên mạng LAN để thực hiện việc này (chỉ kết nối từ mạng LAN với IP WAN của bộ định tuyến của bạn), thì điều này chỉ được hỗ trợ cho một số bộ định tuyến. Rốt cuộc, công việc của bộ định tuyến là định tuyến lưu lượng giữa các bên mạng LAN và mạng LAN, không định tuyến lưu lượng truy cập từ một bên sang chính nó. Hỗ trợ kết nối với các cổng chuyển tiếp trên mạng IP IP từ bên trong mạng LAN thực sự là ngoại lệ chứ không phải là quy tắc, mặc dù nhiều bộ định tuyến gia đình / văn phòng có tính năng này.

    Vì vậy, nếu bạn không kiểm tra cổng chuyển tiếp từ một máy chủ ở phía mạng WAN, bạn nên làm như vậy. Lựa chọn của bạn cho việc này là:

    • Kết nối bản thân từ phía mạng WAN. Điều này hoạt động nếu bạn có quyền truy cập vào một máy ở đó, ví dụ: truy cập SSH vào máy từ xa ở trường, nơi làm việc, nhà của một người bạn hoặc tương tự.

    • Kết nối máy kiểm tra giữa bộ định tuyến và bất cứ điều gì cung cấp kết nối Internet của nó . Nếu bạn có modem cáp / DSL / ISDN có cổng Ethernet và bộ định tuyến của bạn được cắm vào đó, bạn có thể kết nối một công tắc với modem và kết nối bộ định tuyến với công tắc. Kết nối máy tính với công tắc. Trước tiên hãy xem máy đó có truy cập Internet không - ngày nay, nhiều ISP cung cấp hai hoặc nhiều địa chỉ IP riêng biệt. Nếu không , hãy truy cập trang thiết lập của bộ định tuyến của bạn và kiểm tra mặt nạ mạng con IP và mạng WAN của nó , sau đó gán tĩnh một địa chỉ IP cho máy được kết nối chuyển đổi trong cùng một mạng con.

      Phương pháp này có một số nhược điểm. Thật là đau! Ngoài ra, về mặt lý thuyết, ISP có thể định cấu hình mạng của họ không chính xác để máy kiểm tra được kết nối với bộ chuyển mạch có thể truy cập Internet. (Trừ khi ISP của bạn có ý định cho phép bạn kết nối với nhiều IP WAN bạn tình cờ đã chọn một IP WAN cho máy kiểm tra mà ISP của bạn đã gán cho bạn, lưu lượng giữa nó và một máy chủ WAN thực sự sẽ bị chặn / bỏ bởi ISP. Nhưng một số ISP có các thực tiễn kỳ lạ, vậy ai biết?) Nếu điều này xảy ra, nó sẽ không gây ra vấn đề nghiêm trọng cho bất kỳ ai (và ngay cả khi có, bạn chỉ kết nối được tối đa vài phút). Tuy nhiên, nó có khả năng được coi là một nỗ lực để có được quyền truy cập bổ sung ngoài giới hạn đăng ký của bạn và - quan trọng hơn - nếu một người dùng khác có cùng IP đó, thì nó có thể phù hợp với kết nối của họ. Do đó, nếu bạn muốn thử phương pháp này, đừng cố truy cập Internet từ máy kiểm tra, hãy dừng ngay lập tức nếu bạn thấy máy kiểm tra có thể truy cập Internet và không thử điều này nếu bị ISP cấm hoặc khuyên bởi ISP của bạn. .

      Có một biến thể về kỹ thuật này đôi khi phù hợp hơn. Bộ định tuyến của bạn có thể nhận thông tin kết nối của nó - địa chỉ IP, mặt nạ mạng con, địa chỉ IP của cổng (bộ định tuyến) trên mạng WAN mà sử dụng khi không biết gửi một cái gì đó và thông tin về máy chủ DNS - từ bạn ISP, thông qua DHCP, thông qua modem cáp / DSL / ISDN. Đây là lý do tại sao bạn phải cắm bộ định tuyến vào modem để cung cấp cho nó cấu hình cần thiết để làm cho kết quả kiểm tra phía WAN có ý nghĩa. Nhưng bộ định tuyến thường sẽ ghi nhớ thông tin này, miễn là nó thực sự được kết nối với một mạng ở phía mạng WAN. Vì vậy, bạn có thể kết nối bộ định tuyến, modem và máy kiểm tra, nhưng sau đó, nhanh chóng vàtrước khi làm bất cứ điều gì với máy kiểm tra ngoài việc đảm bảo công tắc xem nó là được kết nối , hãy ngắt kết nối modem.

    • Sử dụng một dịch vụ miễn phí trên Internet để kiểm tra các cổng của bạn. Do việc chèn máy kiểm tra giữa giao diện WAN của bộ định tuyến và Internet (ở trên) có liên quan cao - và vì nó sẽ hiển thị một cổng có thể truy cập ngay cả khi không thể truy cập do bị chặn bởi ISP của bạn (điều này cũng đúng khi kết nối với IP WAN của bộ định tuyến từ phía LAN) - thường sử dụng dịch vụ quét cổng dựa trên web tốt hơn.

      Có nhiều dịch vụ quét cổng. (Một số môn thể thao cụm từ "kiểm tra tường lửa của bạn" với ý tưởng rằng hầu hết mọi người đang cố gắng chặn hơn là tạo điều kiện truy cập.) Đây là một. Nếu bạn chọn sử dụng cái đó, bấm Proceed , nhập 57757 vào hộp văn bản và bấm Sử dụng thăm dò cổng tùy chỉnh được chỉ định . Với mục đích để máy chủ chạy, bạn muốn nó được "mở". "Đóng" có nghĩa là cổng có thể truy cập được nhưng máy chủ không chạy (và do đó, nỗ lực kết nối đã bị từ chối). "Tàng hình" có nghĩa là cổng không thể truy cập - như thể không có máy nào được đặt ở đó (hoặc như thể cổng được chuyển tiếp ở nơi không có máy).

  5. OK, vì vậy bạn đã xác định nó thực sự không thể truy cập được từ Internet. Có khả năng bạn có thể quét nó (lý tưởng nhất là từ phía mạng LAN) để biết chi tiết, mặc dù điều này thường không cung cấp thông tin hữu ích.

    Nếu bạn muốn làm điều này, thì về phía mạng WAN, bạn có thể chạy:

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

    Nếu cổng được hiển thị là đã được lọc, điều đó xác nhận rằng các gói được gửi có thể sẽ không đi đến đâu (hoặc bị chặn / bỏ dọc đường).

  6. Thật đáng để kiểm tra xem liệu sự cố phát sinh từ cổng tiếp xúc với mạng WAN có khác với cổng mà máy chủ đang thực sự lắng nghe hay không. Chuyển tiếp cổng 5557 trên mạng LAN sang cổng 22 trên máy LAN sẽ giúp mọi thứ hoạt động tốt, nhưng có lẽ ở đâu đó (máy chủ, máy khách) có gì đó giả sử số cổng giống với quan điểm của máy chủ và máy khách.

    Có lẽ bạn không thể chuyển tiếp cổng 22 thông qua bộ định tuyến. Có lẽ ISP của bạn chặn cổng đó. Nhưng nếu bạn có thể làm điều đó, hãy làm điều đó!

    Nếu không, bạn có thể làm cho máy chủ OpenSSH thực sự lắng nghe trên cổng 57757.

    Để thực hiện việc này, hãy sao lưu tệp cấu hình máy chủ:

    cd /etc/ssh
    sudo cp sshd_config sshd_config.old
    

    Sau đó chỉnh sửa nó:

    gksu gedit sshd_config
    

    Hoặc sử dụng trình soạn thảo văn bản bảng điều khiển nếu máy không có GUI:

    sudo nano -w sshd_config
    

    Gần đầu tập tin, khối văn bản này xuất hiện:

    # 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
    

    Chỉ cần thay đổi Port 22dòng ở trên cùng, để nói Port 57757thay thế.

    • Bạn có thể thêm một cổng thay vì thay đổi nó. Tôi khuyên bạn nên thử nghiệm với cấu hình hiệu quả đơn giản nhất, mặc dù.

      Xem man sshd_configđể biết thêm chi tiết về cách định cấu hình máy chủ OpenSSH.

    Lưu tệp, thoát khỏi trình soạn thảo văn bản và khởi động lại máy chủ SSH bằng:

    sudo restart ssh
    

    Bây giờ thay đổi cổng chuyển tiếp trên bộ định tuyến để cổng 5757 chuyển tiếp sang cổng 57757 (không phải 22) trên máy chủ OpenSSH và xem liệu nó có thể truy cập được từ Internet không.

  7. Nếu nó vẫn không hoạt động, hãy xem có thể tường lửa của Ubuntu thực sự đang chặn lưu lượng truy cập bắt nguồn từ bên ngoài mạng LAN không.

    (Điều này là không thể nếu bạn không tự cấu hình theo cách này, nhưng nếu tất cả các cài đặt của bạn đều đúng và không có bước nào ở trên tiết lộ bất cứ điều gì về vấn đề, thì đáng để kiểm tra.)

    Chạy:

    sudo iptables -L
    

    Theo mặc định, trong Ubuntu, đầu ra trông như sau:

    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
    

    Đây là một chính sách cho phép đơn giản, về cơ bản tương đương với việc không chạy tường lửa. (Thật vậy, nếu mô-đun tường lửa của bộ lọc mạng không được biên dịch vào kernel của bạn, hệ thống của bạn sẽ hoạt động giống như với các cài đặt ở trên, mặc dù iptableslệnh, trong đó netfiltercài đặt truy vấn , sẽ không hoạt động.)

    Nếu cấu hình của bạn không giống như vậy, hãy đọc man iptablesđể tìm hiểu xem họ đang làm gì và / hoặc chỉnh sửa câu hỏi của bạn (hoặc, nếu bạn là một người khác có vấn đề tương tự đọc nó, hãy đăng câu hỏi mới) để đưa vào họ Xin lưu ý rằng, có khả năng, các iptablesquy tắc của bạn có thể tiết lộ thông tin nhạy cảm về cấu hình của bạn. Nói một cách thực tế, đây thường không phải là trường hợp - ngoại trừ các quy tắc có thể có về các máy chủ cụ thể bị chặn hoặc nếu cấu hình của bạn rất xấu / không an toàn - thường là tính hữu ích của thông tin này đối với kẻ tấn công, đặc biệt là đối với máy trên một mạng LAN nhà / văn phòng đằng sau bộ định tuyến NAT , là tối thiểu.


1

Vì nó hoạt động từ bên trong mạng LAN của bạn nên thiết lập máy chủ của bạn có vẻ đúng. Bạn phải yêu cầu bộ định tuyến của mình chuyển tiếp từ cổng bạn muốn sử dụng ở bên ngoài sang cổng 57757 trên máy của bạn .
A traceroutesẽ không được sử dụng trong trường hợp này.


Được rồi, tôi hình dung phía máy đã ổn. Vâng, tôi đã đặt bộ định tuyến của mình để chuyển tiếp 5757 đến 22 ... nhưng tôi có cùng một vấn đề. sshd_config cũng được đặt ở cổng 22.
Ci3

Đó có lẽ phải là: ' cổng bạn muốn sử dụng ở bên ngoài (ví dụ: 57757 ) đến cổng 22 trên máy của bạn .' Đó là địa chỉ cổng công cộng mà bạn cần che khuất.
david6

Không đúng trong trường hợp này - nếu tôi hiểu câu hỏi của Chris
guntbert
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.