SSH Server không trả lời yêu cầu kết nối


14

Tôi đang cố gắng thiết lập máy chủ SSH trên máy cục bộ của mình bằng OpenSSH. Khi tôi cố gắng SSH từ một máy chủ từ xa vào máy chủ SSH cục bộ của mình, máy chủ SSH không phản hồi và hết yêu cầu. Tôi khá chắc chắn rằng có một sửa chữa thực sự rõ ràng cho điều này mà tôi chỉ đơn giản là nhìn ra.

Đây là những gì xảy ra khi tôi cố gắng SSH từ một máy chủ từ xa:

yoshimi@robots:/$ ssh -vv volt@99.3.26.94
OpenSSH_6.7p1 Debian-5, OpenSSL 1.0.1k 8 Jan 2015
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to 99.3.26.94 [99.3.26.94] port 22.
debug2: fd 3 setting O_NONBLOCK
debug1: connect to address 99.3.26.94 port 22: Connection timed out
ssh: connect to host 99.3.26.94 port 22: Connection timed out

Máy robotschủ từ xa của tôi ở đâu và 99.3.26.94là máy chủ SSH cục bộ của tôi.

SSH đang chạy

volt@arnold:~$ ps -A | grep sshd
 5784 ?        00:00:00 sshd

Trong trường hợp arnoldlà máy chủ SSH địa phương của tôi.

Chuyển tiếp cổng được thiết lập trên bộ định tuyến

Tôi đã cài đặt bộ định tuyến tại nhà để chuyển tiếp các cổng 80 và 22 đến máy chủ SSH của mình. Thật thú vị, cổng 80 hoạt động mà không gặp trở ngại - đi thẳng vào thư mục web Apache. Cổng 22 - không quá nhiều.

NMap nói rằng nó được lọc

yoshimi@robots:/$ nmap -p 22 99.3.26.94

Starting Nmap 6.47 ( http://nmap.org ) at 2015-06-02 14:45 EDT
Nmap scan report for 99-3-26-94.lightspeed.bcvloh.sbcglobal.net (99.3.26.94)
Host is up (0.33s latency).
PORT   STATE    SERVICE
22/tcp filtered ssh

Nmap done: 1 IP address (1 host up) scanned in 7.59 seconds

Máy robotschủ từ xa của tôi ở đâu và 99.3.26.94là máy chủ SSH cục bộ của tôi.

Đó không phải là IPTables (tôi nghĩ)

volt@arnold:~$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
fail2ban-ssh  tcp  --  anywhere             anywhere             multiport dports ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain fail2ban-ssh (1 references)
target     prot opt source               destination         
RETURN     all  --  anywhere             anywhere            

... Và tôi không có bất kỳ tường lửa nào khác - đó là một mạng Debian tương đối mới.

Vì vậy, sau đó: nó có thể là gì khác? Nó chắc chắn dường như là một loại tường lửa để bỏ qua lưu lượng truy cập, nhưng nếu đó không phải là bộ định tuyến, thì nó không phải là iptables và nó không phải là một tường lửa khác trên máy chủ SSH, ... còn cái quái gì nữa không ??

EDIT: Yêu cầu kết nối từ lỗi mạng nội bộ

yoshimi@robots:/$ ssh volt@192.168.1.90
ssh: connect to host 192.168.1.90 port 22: No route to host

1
Bạn đã thử SSH từ một máy tính phía sau bộ định tuyến (nội bộ) chưa? Ngoài ra, xem điều này .
saiarcot895

Cảm ơn tài liệu tham khảo, @ saiarcot895. Ngoài ra, xem chỉnh sửa.
kittykittybangbang

Địa chỉ IP của máy tính mà bạn đã cố gắng thực hiện ở trên ^ với cái gì? Bạn có thể ping nó không?
111 ---

Trước hết hãy kiểm tra xem có thứ gì không nếu không lấy địa chỉ arping remotehostphải trả lời chỉ một địa chỉ hw, sau đó kiểm tra xem hwaddress có giống nhau không. Sau đó kiểm tra độ phân giải với dig remotehostdig -x remoteipsau đó kiểm tra xem máy chủ từ xa không trỏ đến 127.0.0.1, vì điều này kiểm tra / etc / hosts của remote. Cuối cùng, hãy thử tắt tường lửa và kiểm tra xem tiến trình ssh có đang chạy hay không.
elbarna

Nó cũng có thể giúp tail -fbất kỳ tệp nhật ký nào bạn có sshd trỏ vào đầu ra. Nếu hoàn toàn không có gì trong nhật ký, nhiều khả năng đó là sự cố giữa hai thiết bị, không phải trên máy chủ ssh.
0xSheepdog

Câu trả lời:


18

Một câu trả lời rất đáng thất vọng

Đặt vấn đề này sang một ngày và trở lại với nó, tôi vừa nhẹ nhõm vừa bối rối (bối rối hơn là nhẹ nhõm) khi thấy mọi thứ đều hoạt động bình thường.

Vì vậy, vấn đề là gì?

Không có cài đặt nào được thay đổi hoặc điều chỉnh - không phải trên bộ định tuyến, không phải trên máy chủ SSH và không phải trên máy của máy khách SSH. Nó khá an toàn để nói rằng đó là bộ định tuyến không xử lý lưu lượng đến đúng cách, bất chấp các cài đặt thích hợp. Cho rằng phần mềm bộ định tuyến nhà dinky không thực sự được thiết kế để đối phó với chuyển tiếp cổng, anh chàng nghèo phải mất một thời gian để thực hiện các thay đổi cần thiết.

Nhưng nó đã được 6 giờ rồi !!

Vâng anh bạn, tôi biết. Tôi đã dành cả ngày cố gắng tìm ra những gì là sai - và không bao giờ tìm thấy nó vì có không phải là điều gì sai trái. Rõ ràng, có thể mất 6 giờ - có thể nhiều hơn - để các cài đặt bộ định tuyến có hiệu lực.

Vậy làm thế nào để tôi biết nếu đây là vấn đề của tôi?

Một công cụ tiện lợi tôi đã gặp trong quá trình thoát hiểm này là tcpdump. Anh chàng gầy gò này đánh hơi giao thông cho bạn, cung cấp cái nhìn sâu sắc có giá trị về những gì đang thực sự xảy ra. Ngoài ra, anh ta có một số tính năng siêu lọc cho phép bạn thu hẹp chính xác những gì bạn muốn xem / cho. Ví dụ: lệnh:

tcpdump -i wlan1 port 22 -n -Q inout

Nói tcpdumpđể tìm kiếm thông qua giao diện wlan1 ( -i= 'giao diện'), chỉ thông qua cổng 22, bỏ qua tên DNS độ phân giải ( -n= 'no name độ phân giải'), và chúng tôi muốn nhìn thấy cả lưu lượng vào và ra ( -Qchấp nhận in, outhoặc inout; inoutlà mặc định).

Bằng cách chạy lệnh này trên máy chủ SSH của bạn trong khi cố gắng kết nối thông qua một máy từ xa, nó sẽ nhanh chóng trở nên rõ ràng chính xác vấn đề nằm ở đâu. Về cơ bản, có 3 khả năng:

  1. Nếu bạn đang thấy lưu lượng truy cập đến từ máy từ xa, nhưng không có lưu lượng đi từ máy chủ cục bộ của bạn, thì vấn đề nằm ở máy chủ: có thể có một quy tắc tường lửa cần được thay đổi, v.v.
  2. Nếu bạn thấy cả đến và đi , nhưng máy từ xa của bạn không nhận được phản hồi, rất có thể đó là bộ định tuyến: nó cho phép lưu lượng đến, nhưng bỏ các gói đi của bạn.
  3. Nếu hoàn toàn không có lưu lượng , thì đó cũng có thể là một vấn đề về bộ định tuyến: các SYNgói của máy từ xa đang bị bộ định tuyến bỏ qua và bỏ qua trước khi chúng đến máy chủ của bạn.

Và một khi bạn đã phát hiện ra vấn đề nằm ở đâu, một sửa chữa (thường) là tầm thường.


1
Sốt tuyệt vời cho "Câu trả lời thất vọng" của bạn! Điểm thưởng cho tên người dùng của bạn .... Tôi đã tham gia vòng tròn về điều này cho hai máy trên cùng một mạng cục bộ! Hóa ra Evil Bell Router là tào lao! Nó chỉ cho phép tôi kết nối ONCE. Sau đó, khi tôi cố gắng kết nối lại, nó từ chối định tuyến cho tôi! Tôi thậm chí có thể SSH cách KHÁC tốt. Vâng ít nhất một lần. Tôi tự hỏi nếu điều đó sẽ không hoạt động trong một vài giờ nữa ..
Richard Cooke

Wow, đã kéo tóc tôi cả ngày vì điều này - có vẻ như tôi cũng gặp phải vấn đề 'Evil Bell Router'. @RichardCooke: giải pháp của bạn là gì?
John Doe

@JohnDoe: Bộ định tuyến thay thế. Một mẫu Asus nằm trong danh sách phần cứng được DD-WRT phê duyệt. Bất kỳ shenanigans nào nữa và tôi sẽ cài đặt DD-WRT!
Richard Cooke

3

Tôi đang chạy Mint (Ubuntu).

Tôi đã thực hiện mọi thứ ... khóa công khai ở định dạng chính xác trong ủy quyền, chmodding, chowning, khởi động lại ssh và sshd, v.v. Như tất cả đã được ghi nhận ở khắp mọi nơi.

Đối với tôi, đó là tường lửa ufw. Việc thiếu bất kỳ phản hồi ssh nào đã khiến tôi gặp phải vấn đề này, tuy nhiên tôi có thể ping không có vấn đề gì cả trên mạng LAN.

Tôi đã thử nghiệm bởi:

sudo ufw service stop

... Và nó hoạt động hoàn hảo, tức là tôi đã nhận được phản hồi từ một cuộc gọi ssh.

Vì vậy, hãy bắt đầu lại từ đầu:

sudo ufw service start

... và thêm quy tắc:

sudo ufw allow openssh

Tất cả đều hoạt động tốt.


Điều này ( ufw) đã giải quyết vấn đề của tôi trên Ubuntu 16.04. Tôi đã làm theo hướng dẫn cài đặt Jenkins một cách mù quáng và kích hoạt ufwtrong quá trình này. Sau khi vô hiệu hóa nó, sshd đang hoạt động trở lại.
Penghe Geng

1

Nếu bạn, như tôi, đã kích hoạt UFW (trên Linux, Ubuntu trong trường hợp của tôi), hãy thử điều này:

sudo ufw enable OpenSSH

Điều này sẽ cho phép OpenSSH trong tường lửa.


1
Tôi chỉ tự nhốt mình, và tôi cảm thấy vô cùng ngu ngốc. Nhưng đó là thực sự.
martpie

0

Chỉ dành cho người khác:

Tôi đã phải sử dụng tùy chọn -P trong tcpdump thay vì -Q

tcpdump -i wlan1 port 22 -n -P inout

Tôi sẽ nâng cấp điều này nếu bạn xác định tên / phiên bản phân phối mà bạn sử dụng.
Richard Cooke

0

Hầu hết các tường lửa thời gian là một thủ phạm. Làm service iptables stopservice ip6tables stop.

Nếu dịch vụ dừng không hoạt động, thì hãy xóa iptable.

iptables --flush.

Nếu đó là một VM thì cũng làm như vậy trong máy chủ

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.