Tích hợp máy chủ từ xa, iTerm2 và tmux


30

Tôi muốn có thể bắt đầu phiên tmux trên máy chủ từ xa, sau đó sử dụng cửa sổ gốc của iTerm2 và chia màn hình trên máy cục bộ của mình.

Ví dụ: giả sử máy chủ từ xa của tôi có phiên tmux đang chạy với một cửa sổ có hai cửa sổ. Trong iTerm2 trên máy cục bộ của tôi, tôi muốn có hai bảng iTerm2 riêng sao cho mỗi ngăn chứa một khung tmux khác nhau.

Điều này có thể không?

(Tôi biết điều ngược lại là có thể - nhờ đó tôi có thể chạy phiên tmux trên máy cục bộ của mình và một máy khác sẽ thấy các tab iTerm2 của tôi dưới dạng cửa sổ chẳng hạn. Nhưng điều này có vẻ vô dụng.)

Câu trả lời:


40

Vâng, điều đó là có thể, hãy chắc chắn rằng:

  • Để có phiên bản mới nhất của tmux được cài đặt từ xa
  • Có phiên bản mới nhất của iterm2 được cài đặt cục bộ

Đăng nhập qua ssh login@hostname -t 'tmux -CC'và voilà - điều này sẽ mở cửa sổ iTerm2 trên hộp cục bộ của bạn đăng nhập vào hộp từ xa.


5
cũng đừng quên kết nối lại để sử dụng ssh login@hostname -t 'tmux -CC attach'và nhìn vào trình bao-> tmux-> bảng điều khiển trong iterm2.
Therealmarv

1
này, các bạn có biết làm thế nào với mosh thay vì ssh không? chỉnh sửa: không thể: github.com/mobile-shell/mosh/issues/640
fane89

1
Nếu bạn muốn kết nối và đính kèm vào một phiên cụ thể, bạn có thể sử dụng như sau:ssh login@hostname -t 'tmux -CC a -t sessionName'
Jeremy Iglehart

bất kỳ cơ hội nào để làm cho nó hoạt động với autossh hoặc bằng cách nào đó làm cho nó chống lại việc ngắt kết nối?
igor

4

Đây là những gì làm việc cho tôi, với các phiên bản phát hành ổn định vào năm 2015-12-16, đó là iTerm 2.1.4 trên OS X 10.11.2 và tmux 1.9 trên Raspbian Linux:

  1. Lần đầu tiên sử dụng .ssh/configtrên máy cục bộ và .ssh/authorized_keystrên máy từ xa của bạn để định cấu hình đăng nhập không cần mật khẩu vào hệ thống từ xa. Khi điều này được cấu hình đúng, bạn sẽ có thể đăng nhập chỉ bằng cách thực hiện ssh pi(giả sử pilà tên máy chủ của hệ thống từ xa của bạn).

  2. Tạo một hồ sơ iTerm2 mới, thay vì đăng nhập vào shell cục bộ của bạn, chỉ gọi ssh piđể đăng nhập vào máy từ xa. Để định cấu hình này, hãy truy cập: Preferences / Profiles / + / Command.Command = "ssh pi"

  3. Mở cửa sổ iTerm2 đến máy từ xa thông qua hồ sơ mới của bạn, bằng cách thực hiện: Profiles / Pi.

  4. Trong cửa sổ đăng nhập từ xa iTerm2, tại dòng lệnh do : tmux -CC. Sau đó, cửa sổ iTerm2 của bạn hiển thị chế độ lệnh tmux, tmux tạo một phiên mới và iTerm2 ngay lập tức tạo một cửa sổ iTerm2 mới cho phiên tmux đó. Trong cửa sổ iTerm2 mới đó, tab iTerm2 ban đầu đại diện cho cửa sổ tmux duy nhất của phiên đó. Nếu bạn thực hiện CMD-T, điều này sẽ tạo ra một tab iTerm2 mới, đại diện cho một cửa sổ tmux mới.

bạn sử dụng cái này như thế nào?

  • Tại thời điểm này, bạn có thể thực hiện "Shell / tmux / Bảng điều khiển" để quan sát sự hiểu biết của iTerm2 về các phiên và cửa sổ tmux hiện có.

  • Nếu bạn đóng cửa sổ iTerm2 đại diện cho phiên tmux, nó sẽ giết phiên bên dưới và tất cả các cửa sổ tmux của nó.

  • Nếu bạn đóng cửa sổ iTerm2 hiển thị chế độ lệnh tmux, thì có vẻ như nó sẽ giết phiên bản máy khách tmux được kết nối với phiên đó, vì vậy cả hai cửa sổ iTerm2 của bạn đều biến mất, nhưng phiên tmux vẫn còn tồn tại và bạn có thể đính kèm lại nó

  • Nếu bạn muốn tách ra một cách có trật tự hơn từ tmux, thì chỉ cần thực hiện ESCtrong cửa sổ chế độ lệnh tmux.

  • Nếu thay vì tạo một phiên tmux mới, điều bạn muốn ban đầu là đính kèm vào một phiên hiện có, thì bạn có thể làm điều đó với tmux -CC attach.

Về lý thuyết, tôi nghĩ nên có cách cấu hình iTerm2 hoặc tmux để khi bạn kết nối với hệ thống từ xa, bạn sẽ tự động được gắn vào bất kỳ phiên tmux hiện tại nào, nhưng tôi không thể làm cho nó hoạt động bằng cách sửa đổi dòng lệnh trong hồ sơ iTerm2.


Để tự động kết nối với phiên tmux đang chạy khi đăng nhập ssh, tôi sử dụng [[ $- == *i* && $SSH_TTY && -z $TMUX && ! -r ~/.notmux ]] && tmux attach-session && exittrong .bashrc (hoặc một cái gì đó được gọi từ đó) Các thử nghiệm dành cho: shell tương tác, phiên ssh, chưa chạy trong tmux, không khẩn cấp-không-làm-nó tập tin. Các exitcuối cùng đóng kết nối khi thoát khỏi tmux (chủ yếu là một cửa sổ mới cho tôi).
zany
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.