Trong phiên tmux, không thể kết nối với máy chủ X sau khi ssh'ing


10

Tại nơi làm việc, tôi có một máy tính để bàn có màn hình và một vài phiên chạy tmux. Ở nhà, tôi thường xuyên ssh vào máy tính để bàn đó và tham gia các phiên tmux đang chạy của tôi. Khi tôi ở nhà, tôi không muốn sử dụng X11, vì vậy tôi không sử dụng -Xcờ. Khi tôi quay trở lại làm việc (sau khi ssh'ing ở nhà) và sử dụng các phiên tmux đó trên máy tính để bàn, tôi không còn có thể làm bất cứ điều gì sẽ sinh ra GUI. Tôi không thể mở tập tin trong chứng minh. Khi tôi thử sử dụng matplotlib, tôi nhận được một : cannot connect to X servertin nhắn.

Sau khi ssh'ing và mở một phiên tmux hiện có ở nhà, làm thế nào để tôi gắn lại khả năng mở công cụ GUI trên máy tính để bàn?

Việc ssh'ing ở nhà dường như làm cho phiên tmux quên rằng nó có thể sinh ra các công cụ GUI.

BIÊN TẬP:


Bit bối rối. Bạn đang sử dụng -Xcờ bây giờ hay không? Bạn chỉ có thể thực hiện công cụ X11 thông qua SSH nếu được đặt.
Anko

Xin lỗi vì sự nhầm lẫn. Tôi không bao giờ sử dụng cờ -X, bất cứ nơi nào. Tôi không có ý định làm công cụ X11 thông qua SSH. Tôi chỉ có ý định sử dụng X11 trên máy tính để bàn của mình, nơi phiên tmux thực sự sống. Tôi sẽ cập nhật câu hỏi ban đầu.
chrisdembia

Câu trả lời:


4

Tất cả những gì tôi cần làm là đặt biến môi trường HIỂN THỊ thành: 0,0. Tôi nghĩ vấn đề là tôi đang sử dụng vỏ cá và tôi cần sử dụng cờ -x để đặt khi thực hiện việc này:

set -x DISPLAY :0.0

3
Lưu ý rằng giá trị chính xác cho DISPLAYcó thể khác với :0.0. Một cách nhanh chóng để tìm hiểu là tạo một cửa sổ tmux mới và echo $DISPLAYở đó.
j08

1
Chỉ cần mở rộng nhận xét từ @ j08lue; trong trường hợp của tôi echo $DISPLAYtrở lại localhost:10.0và chạy set DISPLAY localhost:0.0đã lừa
IsaacS

1
Có ai biết một bashphiên bản tương đương, hoặc một phiên bản vỏ chéo? set -xchỉ làm tăng tính dài dòng cho tôi trong bash. @IsaacS, bạn đã phải set DISPLAY localhost:10.0thay thế hoặc đã localhost:0.0làm việc cho bạn?
icedwater

4
Trên bash, bạn sẽ có thể sử dụng export DISPLAY=:0.0.
chrisdembia

1
Tôi không thích giải pháp này, vì tôi phải thực hiện nó cho mọi cửa sổ mới trong phần còn lại của phiên (kéo dài hàng tuần đối với tôi). Và nó xảy ra ngay cả khi tôi quay lại hệ thống X11 chính của mình để tạo các cửa sổ mới. Làm thế nào chúng ta có thể có được tmux để ngăn chặn việc $DISPLAYkhông cài đặt?
nealmcb

4

Tôi gặp vấn đề tương tự. Tôi thường sử dụng tmuxnhư một phần của môi trường máy tính để bàn X11 nhiều màn hình và đôi khi ssh in từ một chromebook, không hỗ trợ X11 hoặc thiết lập $DISPLAY. Câu trả lời của @chrisdembia hoạt động, nhưng yêu cầu thay đổi DISPLAYtrong mỗi cửa sổ mới cho phần còn lại của phiên tmux, đó là một nỗi đau.

Một giải pháp vĩnh viễn là xóa DISPLAYkhỏi update-environmentbiến tmux trong cài đặt tmux. Bạn có thể thấy giá trị hiện tại của bạn với lệnh này:

tmux show-options -g update-environment

Để xóa nó, tôi đã thêm dòng này vào ~/.tmux.conftệp của mình , bao gồm mọi thứ trừ DISPLAY:

set-option -g update-environment "SSH_ASKPASS SSH_AUTH_SOCK SSH_AGENT_PID SSH_CONNECTION WINDOWID XAUTHORITY"

Điều này được giải thích thêm tại Đặt lại biến HIỂN THỊ vỏ trong phiên tmux trên ssh , điều này giải thích tại sao DISPLAYcó mặc định cho trường hợp sử dụng phổ biến khác.

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.