it-swarm-vi.tech

Làm cách nào để bật chuyển tiếp SSH X11 qua máy chủ bổ sung?

Tôi có máy chủ A, B và C. Từ Máy chủ A Tôi chỉ có thể truy cập thông qua ssh B. Từ B Tôi có thể truy cập C. Tôi muốn có thể chạy các chương trình X11 trên C và chuyển tiếp hiển thị sang A.

Tôi đã thử điều này:

A $ ssh -X B [.__.] B $ ssh -X C [.__.] C $ xclock [.__.] Lỗi: Không thể mở màn hình: [.__.]

Nhưng nó không hoạt động.

34
lexsys

Có một số cách để làm điều này, cách tôi thích là chuyển tiếp cổng ssh:

Đầu tiên, kết nối với máy B và chuyển [localPort] sang C: 22 đến B

A$ ssh -L [localPort]:C:22 B

Tiếp theo, kết nối với C từ A thông qua đường hầm mới được tạo này bằng [localPort], chuyển tiếp X11

A$ ssh -X -p [localPort] localhost

Bây giờ chúng ta có thể chạy các chương trình X11 trên C và hiển thị chúng trên A

C$ xclock

[localPort] có thể là bất kỳ cổng nào mà bạn chưa nghe trên A, tôi thường sử dụng 2222 để đơn giản.

26
dave

Điều này có thể dễ dàng được thực hiện bằng cách sử dụng chuyển tiếp cổng:

A$ ssh -NL 2022:C:22 B &
A$ ssh -X -p 2022 localhost
C$ xclock

Cổng localhost: 2022 được chuyển tiếp đến C: 22 qua B SSH đến C qua localhost: 2022 Sử dụng X như bình thường

7
AgentK

Giả sử vấn đề là máy giữa không có X, nhưng nó được cấu hình để cho phép chuyển tiếp X11, chỉ cần cài đặt xauth.

trên hệ thống dựa trên yum (Fedora, redhat, centos):

B$ Sudo yum install xauth

trên hệ thống dựa trên apt (debian, ubfox):

B$ Sudo apt-get install xauth
4
Jayen

Đối với các phiên bản mới hơn opensshd, bạn phải tắt X11UseLocalhost để làm việc này.

Bạn cần làm điều này trên Host C's /etc/ssh/sshd_config và khởi động lại sshd để nó hoạt động:

X11Forwarding yes
X11UseLocalhost no
3
Brad Allison

Bạn không thể chuyển tiếp màn hình X11 nếu bạn tắt X11Forwarding trong bất kỳ sshd nào bạn đang sử dụng.

người đàn ông sshd_config:

X11Forwarding
  Specifies whether X11 forwarding is permitted. The argument must be “yes”
  or “no”.  The default is “no”.

Bạn phải đảm bảo X11Forwarding được bật ở đích tất cả các sshds trung gian bạn đang sử dụng.

Chỉ là một gợi ý nhỏ: bạn nên thử sử dụng chuyển tiếp hiển thị VNC, X11 khá tốn băng thông.

2
asdmin

Nếu bạn thường xuyên đi từ A đến C, bạn có thể định cấu hình B làm proxy:

A:~/.ssh/config:

Host C
  ForwardX11   yes
  ProxyCommand ssh -W %h:%p B

sau đó chỉ là:

A$ ssh C xclock
2
Jayen

Bạn đã thử với

A$ ssh -Y B
B$ ssh -Y C
C$ xlclock

Cờ -Y "Cho phép chuyển tiếp X11 đáng tin cậy."

1
pyhimys