Tôi đang cố gắng theo dõi nhiều JVM chạy trên các máy chủ khác nhau thông qua một đường hầm ssh.
Nhờ một trong những bậc thầy UNIX ở đây, tôi đã quản lý để chạy cái này cho một máy chủ bằng cách:
- Chạy
jstatd
trên máy chủ mục tiêu - Thiết lập Visual VM để sử dụng 9696 làm cổng proxy vớ.
Trên PC cục bộ của tôi, hãy chạy:
ssh -L 2222:server1:22 bastion-host
Trên PC cục bộ của tôi, hãy chạy:
ssh -o port=2222 -D 9696 -L 1099:localhost:1099 localhost
Đây là mẹo. Bây giờ khi tôi thử và chuyển sang máy chủ thứ hai, tôi sẽ thử:
Trên PC cục bộ của tôi, hãy chạy:
ssh -L 3333:server2:22 bastion-host
Trên PC cục bộ của tôi, hãy chạy:
ssh -o port=3333 -D 9696 -L 2099:localhost:1099 localhost
Tuy nhiên, bước cuối cùng phàn nàn với:
bind: Address already in use
channel_setup_fwd_listener: cannot listen to port: 9696
Có ai quản lý để làm một cái gì đó tương tự?
Cập nhật:
Lý do điều này rất phức tạp là jstatd là một ứng dụng máy chủ RMI:
http://doad.oracle.com/javase/1.5.0/docs/tooldocs/share/jstatd.html
Như với các ứng dụng RMI, những ứng dụng này đăng ký với một cấu trúc lại. Sử dụng rmi thông qua tường lửa yêu cầu tôi sử dụng SOCKS như được mô tả ở đây:
http://doad.oracle.com/javase/1.4.2/docs/guide/rmi/faq.html#firewallOut
Thật không may, visualvm chỉ cho phép tôi đặt cổng proxy SOCKS một lần và tùy chọn -D sẽ không cho phép tôi chuyển tiếp cùng một cổng cục bộ tới cả hai máy chủ ...
1099
gì? Bạn có thể chính xác liệu bastion-host
có thể kết nối đến server1
và server2
không có tường lửa liên quan?