Đây là một câu hỏi Canonical về kết nối bị từ chối
Chúng tôi thấy rất nhiều câu hỏi để có hiệu lực
Khi tôi cố gắng kết nối với một hệ thống, tôi nhận được một tin nhắn
Kết nối bị từ chối
Tại sao lại thế này?
Đây là một câu hỏi Canonical về kết nối bị từ chối
Chúng tôi thấy rất nhiều câu hỏi để có hiệu lực
Khi tôi cố gắng kết nối với một hệ thống, tôi nhận được một tin nhắn
Kết nối bị từ chối
Tại sao lại thế này?
Câu trả lời:
Lưu ý : Thông báo này là một triệu chứng của vấn đề bạn đang cố gắng giải quyết. Hiểu nguyên nhân của thông điệp cuối cùng sẽ dẫn bạn đến việc giải quyết vấn đề của bạn.
Thông báo 'Từ chối kết nối' có hai nguyên nhân chính:
Không có quá trình là lắng nghe.
Đây là lý do phổ biến nhất cho tin nhắn. Trước tiên hãy đảm bảo rằng bạn đang cố gắng kết nối với hệ thống chính xác. Nếu bạn đang xác định xem đây có phải là sự cố hay không, trên hệ thống từ xa hãy chạy netstat hoặc ss 1, ví dụ: nếu bạn đang mong đợi một quá trình được lắng nghe trên cổng 22222
sudo netstat -tnlp | grep :22222
hoặc là
ss -tnlp | grep :22222
Đối với OSX, một lệnh thích hợp là
sudo netstat -tnlp tcp | grep '\.80 '
Nếu không có gì nghe thì ở trên sẽ không có đầu ra. Nếu bạn thấy một số đầu ra thì hãy xác nhận rằng đó là những gì bạn mong đợi, hãy xem phần tường lửa bên dưới.
Nếu bạn không có quyền truy cập vào hệ thống từ xa và muốn xác nhận sự cố trước khi báo cáo với quản trị viên có liên quan, bạn có thể sử dụng tcpdump (wireshark hoặc tương tự).
Khi một kết nối được thử với một cổng IP: nơi không có gì lắng nghe, phản hồi từ hệ thống từ xa đến gói SYN ban đầu là một gói có các cờ RST, ACK được đặt. Điều này sẽ đóng kết nối và gây ra thông báo Từ chối kết nối, vd
$ sudo tcpdump -n host 192.0.2.1 và cổng 22222
tcpdump: đầu ra verbose bị chặn, sử dụng -v hoặc -vv để giải mã giao thức đầy đủ
trên enp14s0, loại EN10MB (Ethernet), kích thước chụp 262144 byte
12: 31: 27 192.0.2.2.34390> 192.0.2.1.22222: Cờ [S] , seq 1207858804, thắng 29200, tùy chọn [mss 1460, sackOK, TS val 15306344 ecr 0, nop, wscale 7], độ dài 0
12: 31: 27.020162 192.0.2.1.22222> 192.0.2.2.34390: Cờ [R.] , seq 0, ack 1207858805, thắng 0, dài 0
Lưu ý rằng tcpdump sử dụng a . để đại diện cho cờ ACK .
Cổng bị chặn bởi tường lửa
Nếu cổng bị chặn bởi tường lửa và tường lửa đã được cấu hình để phản hồi với icmp-port-unreachable
điều này cũng sẽ gây ra thông báo từ chối kết nối. Một lần nữa bạn có thể thấy điều này với tcpdump (hoặc tương tự)
$ sudo tcpdump -n icmp
tcpdump: đầu ra verbose bị chặn, sử dụng -v hoặc -vv để
nghe giải mã giao thức đầy đủ trên enp14s0, EN10MB loại liên kết (Ethernet), kích thước thu 262144 byte 13: 03.149897 2.2: Cổng ICMP 192.0.2.1 tcp 22222 không truy cập được, chiều dài 68
Lưu ý rằng điều này cũng cho chúng ta biết tường lửa chặn ở đâu.
Vì vậy, bây giờ bạn biết những gì gây ra thông báo từ chối kết nối, bạn nên có hành động thích hợp, ví dụ như liên hệ với quản trị viên tường lửa hoặc điều tra lý do cho quá trình không lắng nghe.
1 công cụ khác có khả năng có sẵn.
Đối với tôi, việc nén Debian 6 đơn giản như kiểm tra dịch vụ SSH :
sudo service ssh status
Và không tìm thấy gì tồn tại (với thông báo ssh: unrecognized service
) chỉ cần cài đặt dịch vụ :
sudo apt-get install openssh-server
Điều này cũng hoạt động nếu bạn không nhận được kết nối SFTP, vì SFTP là tập hợp con của SSH (trong khi FTPS là tập hợp con của FTP).