ssh Connection từ chối: làm thế nào để khắc phục sự cố?


17

Tôi đang cô:

$ ssh eric@myserver

nơi myserverlà một máy tính trong mạng nội bộ. Tôi có thể ping myserverhoặc trả lời HTTP trên cổng 8080, v.v., nhưng khi tôi thử ssh, tôi nhận được

ssh: connect to host myserver port 22: Connection refused

Tôi đang sử dụng Ubuntu 10.

ps -ax, như đề xuất cho:

eric@Isaiah:~$ ps -ax | grep ssh
Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html
 1641 ?        Ss     0:04 /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session gnome-session
18376 pts/3    S+     0:00 grep --color=auto ssh

Câu trả lời:


15

Bạn không có trình nền SSH đang chạy. Nếu bạn nhìn vào đầu ra từ ps axlệnh, bạn sẽ thấy rằng hai quy trình duy nhất có 'ssh' trong mô tả là ssh-agent(hoạt động hoàn toàn khác với sshd) và grep sshquy trình bạn đang sử dụng để lọc đầu ra ps.

Tùy thuộc vào phân phối nào được cài đặt, bạn có thể cần cài đặt hoặc chạy sshmáy chủ, thường được gọi openssh-serverhoặc sshdtùy thuộc vào trình quản lý gói của bạn.


13

Các bước để gỡ lỗi vấn đề trên:

  1. Sử dụng nmapcông cụ để biết cổng nào được mở trong máy chủ đó. nmaplà một máy quét cổng. Vì có thể máy chủ ssh đang chạy trên một cổng khác. nmapsẽ cung cấp cho bạn một danh sách các cổng được mở.

     $ nmap myserver
    

2. Bây giờ bạn có thể kiểm tra máy chủ nào đang chạy trên một cổng nhất định. Giả sử trong đầu ra của nmap, cổng 2424 được mở. Bây giờ bạn có thể máy chủ nào đang chạy trên 2424 bằng cách sử dụng công cụ nc (netcat).

 $ nc -v -nn myserver portno

Giả sử đầu ra của cổng 2424 là:

myserver 2424 open
SSH-2.0-OpenSSH_5.5p1 Debian-4ubuntu5

Điều này có nghĩa là ssh đang chạy vào 2424.

Tiếp tục thay đổi portno trong lệnh trên và kiểm tra tất cả các cổng được liệt kê mở bằng nmap.


3

Điều đó có nghĩa là máy chủ ssh không chạy trên máy đó hoặc tường lửa không cho phép ssh xuyên qua. Bạn có thể kiểm tra xem ssh có chạy với 'ps -ax | grep ssh '.


Chỉnh sửa câu hỏi để hiển thị kết quả của ps -ax. Không chắc nó có nghĩa gì.
Eric Wilson

1
Nó có nghĩa sshlà không chạy.
David Schwartz

1
Kỳ dị. Tôi không chắc tại sao bây giờ bạn có hai lần đề nghị giúp đỡ mà không thực sự hữu ích. Trước tiên, bạn đề xuất một lệnh hữu ích để kiểm tra xem ssh có đang chạy hay không mà không cho tôi biết cách diễn giải kết quả. Sau đó, bạn cung cấp giải thích tối thiểu cho các kết quả đó, mà không có gợi ý về cách bạn đến với giải thích đó, hoặc hành động nào có thể phù hợp. Tôi không chắc liệu bạn có đang cố gắng giúp tôi không, và đang đánh giá sai mức độ kinh nghiệm của tôi, hoặc nếu bạn đang cố gắng làm nổi bật sự thiếu hiểu biết của tôi.
Eric Wilson

3
Danh sách các quy trình không bao gồm một sshdquy trình, có nghĩa sshdlà không chạy. Giải pháp là bắt đầu sshd.
David Schwartz

1

Hai tùy chọn trước là tốt. Bạn cũng có thể sử dụng -vhoặc -vvđối số.

$ ssh -vv eric@myserver

0

Tôi cũng gặp phải vấn đề này, nhưng trong môi trường VirtualBox, vì vậy để giải quyết nó, chúng ta cần đặt địa chỉ IP ở cùng một phân đoạn LAN; ví dụ:

Trên máy chủ của tôi, tôi mở cmdvà gõ ipconfig. Tôi nhận được 100.2.2.1 (ví dụ).

Vì vậy, trong máy ảo, chúng ta phải đặt địa chỉ của VM /etc/hoststhành một giá trị như 100.2.2.3, hãy xem số cuối cùng và trả lại máy ảo, nhưng trước khi khởi động máy ảo, hãy định cấu hình mạng trong cài đặt của ảo máy, vì vậy chúng ta cần đặt bộ điều hợp mạng trong kết nối cầu.

Tất cả điều này là trong một môi trường Solaris.

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.