Đây là những bước chi tiết để kiểm tra hoặc khắc phục sự cố một đường hầm SSH. Bạn có thể sử dụng một số trong số đó trong một tập lệnh. Tôi đang thêm câu trả lời này bởi vì tôi đã phải khắc phục sự cố liên kết giữa hai ứng dụng sau khi họ ngừng hoạt động. Chỉ cần grepping cho quá trình ssh là không đủ, vì nó vẫn còn đó. Và tôi không thể sử dụng nc -z
vì tùy chọn đó không có sẵn trên câu lệnh netcat của tôi.
Hãy bắt đầu lại từ đầu. Giả sử có một máy, sẽ được gọi là địa phương với địa chỉ IP là 10.0.0.1 và một máy khác, được gọi là từ xa, tại 10.0.3.12. Tôi sẽ thêm các tên máy chủ này vào các lệnh dưới đây, vì vậy rõ ràng là chúng đang được thực hiện ở đâu.
Mục tiêu là tạo một đường hầm sẽ chuyển tiếp lưu lượng TCP từ địa chỉ vòng lặp trên máy từ xa trên cổng 123 đến máy cục bộ trên cổng 456.Điều này có thể được thực hiện với các lệnh sau, trên máy cục bộ:
local:~# ssh -N -R 123:127.0.0.1:456 10.0.3.12
Để kiểm tra xem tiến trình đang chạy, chúng tôi có thể làm:
local:~# ps aux | grep ssh
Nếu bạn thấy lệnh trong đầu ra, chúng tôi Có thể tiến hành. Nếu không, hãy kiểm tra xem khóa SSH đã được cài đặt trong điều khiển từ xa chưa. Lưu ý rằng loại trừ tên người dùng trước IP từ xa, làm cho ssh sử dụng tên người dùng hiện tại.
Tiếp theo, chúng tôi muốn kiểm tra xem đường hầm được mở trên điều khiển từ xa:
remote:~# netstat | grep 10.0.0.1
Chúng tôi sẽ nhận được một kết quả tương tự như sau:
tcp 0 0 10.0.3.12:ssh 10.0.0.1:45988 ESTABLISHED
Sẽ được tốt đẹp để thực sự thấy một số dữ liệu đi qua từ xa đến máy chủ. Đây là nơi netcat có sẵn. Trên CentOS, nó có thể được cài đặt với yum install nc
.
Trước tiên, mở một cổng lắng nghe trên máy cục bộ:
local:~# nc -l 127.0.0.1:456
Sau đó, tạo ra một kết nối trên điều khiển từ xa:
remote:~# nc 127.0.0.1 123
Nếu bạn mở một thiết bị đầu cuối thứ hai để máy tính cục bộ, bạn có thể xem kết nối. Một cái gì đó như thế này:
local:~# netstat | grep 456
tcp 0 0 localhost.localdom:456 localhost.localdo:33826 ESTABLISHED
tcp 0 0 localhost.localdo:33826 localhost.localdom:456 ESTABLISHED
Vẫn còn tốt hơn, đi trước và gõ một cái gì đó trên remote:
remote:~# nc 127.0.0.1 8888
Hallo?
anyone there?
Bạn sẽ thấy điều này được phản ánh trên các thiết bị đầu cuối tại địa phương:
local:~# nc -l 127.0.0.1:456
Hallo?
anyone there?
Đường hầm đang làm việc! Nhưng nếu bạn có một ứng dụng, được gọi là tên ứng dụng, được cho là đang nghe trên cổng 456 trên máy cục bộ? Chấm dứt nc ở cả hai bên rồi chạy ứng dụng của bạn. Bạn có thể kiểm tra xem nó lắng nghe trên cổng đúng với this:
local:~# netstat -tulpn | grep LISTEN | grep appname
tcp 0 0 127.0.0.1:456 0.0.0.0:* LISTEN 2964/appname
Bằng cách này, cách chạy lệnh tương tự trên điều khiển từ xa sẽ hiển thị sshd lắng nghe trên cổng 127.0.0.1:123.
này một phần có thể giúp "lsof -i | grep ssh" – qartal