Đính kèm phiên tmux vào máy từ xa


31

Tôi đang sử dụng tmux trên máy cục bộ của mình và thường có một vài phiên đồng thời.

Những gì tôi thường làm là tôi có một phiên với các cửa sổ khác nhau để hoạt động cục bộ và các phiên khác trong đó tôi kết nối một số cửa sổ với một máy chủ mỗi phiên.

Một cây phiên / cửa sổ sẽ trông như thế này trong việc sử dụng hàng ngày tôi tạo ra từ tmux:

(TMUX on my local machine)
 |
 +- session 1: local
 |  \_ window 1: local shell
 |  \_ window 2: local shell
 |  \_ ...
 |
 + session 2: somehost
 |  \_ window1: ssh user@somehost
 |  \_ window2: ssh user@somehost
 |  \_ ...
 |
 + session 3: someotherhost
    \_ window1: ssh user@someotherhost
    \_ window2: ssh user@someotherhost
    \_ ...

Có cách nào để tạo phiên 2 & phiên 3 một số loại phiên từ xa kết nối với phiên tmux được tạo trên somehost & sometherhost không?

Cây trên sẽ trông như thế này:

(TMUX on my local machine)
 |
 +- session 1: local
 |  \_ window 1: local shell
 |  \_ window 2: local shell
 |  \_ ...
 |
 + session 2 linked to an existing session on somehost
 |  \_ window1: shell on somehost
 |  \_ window2: shell on somehost
 |  \_ ...
 |
 + session 3 linked to an existing session on someotherhost
    \_ window1: shell on someotherhost
    \_ window2: shell on someotherhost
    \_ ...

Tôi đã tìm thấy chủ đề này nhưng tôi không chắc đây là điều tôi muốn làm: Có thể chia sẻ ổ cắm tmux giữa các máy chủ không?

Tôi cho rằng những gì tôi đang tìm kiếm sẽ yêu cầu tôi phải có cấu hình tmux tương tự trên máy cục bộ của tôi, somehost & sometherhost nhưng điều đó sẽ không thành vấn đề.


Bạn đã tìm ra một cách giải quyết cho điều này? Tôi nghĩ rằng có một phiên từ xa mà bạn có thể quản lý như địa phương là ý tưởng tuyệt vời, nhưng có vẻ như câu trả lời được bình chọn cao nhất không thực sự là câu hỏi của bạn
mbigras

Câu trả lời:


18

Bạn có thể truyền lệnh tới ssh khi kết nối với máy chủ từ xa. Bao gồm -ttùy chọn tmux attach-sessionđể kết nối với phiên tmux từ xa:

ssh <remote host> -t tmux attach-session

Bài đăng này về việc đính kèm một phiên tmux thông qua ssh giải thích nó chi tiết hơn.


18
Điều này không chỉ cung cấp cho bạn một phiên lồng nhau? Tôi tin rằng những gì OP đang cố gắng làm là có phiên từ xa xuất hiện cùng với phiên cục bộ của họ để họ có thể điều hướng trong một cửa sổ chọn / cửa sổ chọn của một tmux.
stsquad

Nếu có nhiều phiên được đính kèm tại máy chủ từ xa, bạn có thể sử dụng: ssh <máy chủ từ xa> -t tmux a -t <tên phiên>
user1757247

Tôi đã thực hiện một số chỉnh sửa để khắc phục sự cố tôi gặp phải và từng bước một. Hy vọng đánh giá ngang hàng sẽ kết thúc sớm. Điều này đã làm việc ssh <remote host> -t /path/to/tmux a -t <my-session-name>, cần thêm-t
Merlin

Tôi có câu hỏi tương tự như OP. Điều này không trả lời câu hỏi của tôi. Nó tạo ra một phiên tmux lồng nhau trong đó tôi phải thoát gấp đôi tất cả các lệnh tmux mà tôi muốn gửi đến phiên đó. Tôi muốn một cái gì đó mà phiên từ xa xuất hiện trong danh sách phiên của tôi giống như phiên địa phương.
Omnifarious

2

Nếu vấn đề chính của bạn là bạn phải gõ ssh remotehostmỗi khi bạn mở cửa sổ mới, default-commandtùy chọn phiên có thể là một cách giải quyết.

Nó tự động thực thi lệnh bạn chỉ định khi bạn mở các cửa sổ mới trong các phiên bạn đặt.

Một thiết lập đơn giản trong .tmux.conf:

bind-key C-r new-session ssh remotehost \; set-option default-command "ssh remotehost"

Ràng buộc khóa này Ctrl-rtạo ra một phiên mới trong đó mọi cửa sổ mới mở trước tiên thực hiện ssh remotehostthay mặt bạn.

Bạn có thể chọn máy chủ để kết nối tại thời điểm tạo phiên với các cài đặt bên dưới:

bind-key C-r command-prompt "new-session -s %1 ssh %1 \; set-option default-command \"ssh %1\""

Cái này hỏi bạn máy chủ bạn muốn làm sshtrong mỗi lần tạo phiên (không phải ở mỗi lần tạo cửa sổ) và bắt đầu phiên dành riêng cho máy chủ đó.

Sẽ mất ít thời gian để thực thi nhiều sshnếu bạn bật tính năng ghép kênh SSH trong cấu hình ssh của bạn. Các .ssh/configví dụ là dưới đây:

Host remotehost
    ControlMaster auto
    ControlPath ~/.ssh/mux-%r@%h:%p
    ControlPersist 10

Lưu ý rằng cài đặt tmux này không tạo phiên tmux trong máy chủ từ xa. Nếu kết nối ssh bị mất, các cửa sổ tmux bị ảnh hưởng không bao giờ quay trở lại.


1

Bạn có thể sử dụng một công cụ như socat để tạo đường hầm ổ cắm unix được tmux sử dụng cho máy cục bộ của bạn. Nhưng bạn thực sự chỉ trao đổi một đường hầm (ssh) cho một (socat) khác để nó không thực sự tốt hơn, và cũng không an toàn.


Có lẽ đường hầm socatxuyên qua ssh? 🙂
có nhiều thứ

vào thời điểm này tmatecó thể là công cụ tốt nhất để xử lý tmux từ xa
untore

0

Nếu bạn nói về shell từ xa, bạn có nghĩa là bạn có thể thực thi các lệnh ở đó, nói cách khác, bạn có quyền truy cập trực tiếp. Trong trường hợp này, bạn chỉ cần sử dụng sshkết nối cho mỗi cửa sổ từ xa.

Bạn có thể nói với một cái gì đó như:

"Này, nhưng không có cách nào để có nhiều cửa sổ cho mỗi máy chủ từ xa!"

và đó là sự thật, do hạn chế ssh. Nhưng, bạn có thể bắt đầu phiên tmux trên mỗi hoặc máy chủ từ xa của bạn. LƯU Ý: trong trường hợp này, bạn cần khởi động lại mặc định Ctrl+btrên máy cục bộ để tránh va chạm.

Ngoài ra tôi khuyên bạn nên sử dụng tmuxinator, nó là công cụ rất hữu ích nếu bạn điều trị lại phiên tmux của mình ít nhất mỗi ngày.

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.