Hiển thị một chồng các kết nối ssh trong thiết bị đầu cuối


0

Tôi đã có ý tưởng này trong một thời gian dài và đã thử một vài cách để thực hiện, nhưng không có may mắn. Đã thử google nhiều lần và luôn luôn tìm thấy không hoàn toàn những gì cần thiết.
Cách làm:

$ ssh hostA

|--------------------------------|
|                                |
|                                |
|                                |
|                                |
|                                |
|                                |
|                                |
| root@hostA $ ssh hostB         |
|--------------------------------|

|--------------------------------|
|                                |
|                                |
|                                |
|                                |
|                                |
|                                |
| root@hostB $                   |
| root@hostA $                   |
|--------------------------------|

Giải pháp gần nhất tôi nghĩ ra là với thanh trạng thái màn hình gnu, hiển thị ssh from hostA to hostB(mẹo là sử dụng $SSH_...các biến). Sẽ rất tốt nếu có một ngăn xếp trực quan của tất cả các kết nối (không chỉ 2).


Điều đó không thực tế. Hãy tưởng tượng bạn chạy trong cả hai phiên top, nó được hiển thị như thế nào? Giải pháp tốt nhất là tmux hoặc nếu bạn có Hệ thống cửa sổ X và không bận tâm đến một số phụ thuộc Gnome, Kẻ hủy diệt .
Bobby

Vì vậy, bạn chỉ đang tìm kiếm để có lời nhắc phản ánh máy chủ mà bạn đã kết nối cũng như máy chủ mà bạn được kết nối? Bạn không thể cập nhật lời nhắc trong hồ sơ bash, sử dụng SSH_ vars?
Paul

@ BOB, thực ra cách hiển thị này không quan trọng - điều quan trọng là phải biết đường dẫn của các kết nối. ví dụ: ssh từ hostA đến hostB và sau đó đến hostC có thể được hiển thị như một ngăn xếp hoặc dưới dạng một dòng: "hostA -> hostB -> root @ hostC $"
Alex

@Paul, như trong văn bản câu hỏi của tôi, tôi đã quản lý để làm cho nó hoạt động với $ SSH_ vars nhưng điều này hoạt động tối đa cho bây giờ + các máy chủ trước đó. Nếu tôi muốn xem một chuỗi / đường hầm gồm 4 kết nối thì sao?
Alex

Oh chờ đã, bạn chỉ có nghĩa là để hiển thị đường dẫn ? Giống như root@hostB_via_hostA, root@hostC_via_hostB_via_hostA? Trong trường hợp đó, hãy bình luận.
Bobby

Câu trả lời:


1

Trong ~/.ssh/environmentbạn có thể đặt các biến môi trường mà bạn muốn chuyển qua các máy chủ từ xa. Điều này đòi hỏi PermitUserEnvironmentcài đặt được kích hoạt trong sshd_config.

Vì vậy, những gì bạn có thể làm là trong .bashrchoặc bất kỳ tập lệnh nào bạn thích, hãy đặt một biến môi trường để chuyển qua:

echo "HOSTPATH=$HOSTPATH-$USER@$HOSTNAME" >> ~/.ssh/environment

Đối với bước nhảy đầu tiên của bạn, HOSTPATHsẽ trống, vì vậy ~/.ssh/environmentsẽ chứa HOSTNAME=-user@host1.

Khi bạn đăng nhập vào máy chủ thứ hai, HOSTNAMEvar env sẽ được chuyển qua cho biết bạn đến từ đâu. Khi bashrc được chạy lại, HOSTPATHbiến sẽ được ghi vào .ssh / enviroment với máy chủ hiện tại được nối vào đầu tiên, sẵn sàng cho bước nhảy tiếp theo:

HOSTNAME=-user@host1-user@host2    

Mỗi hy vọng sẽ dẫn đến HOSTPATHviệc được nối với máy chủ hiện tại và sẵn sàng chuyển qua môi trường ssh sang bước nhảy tiếp theo.

Bạn có thể thích nghi điều này cho asthetic của riêng bạn. Nếu bạn thoát khỏi máy chủ và nhảy sang máy chủ khác, nó sẽ tự động xóa máy chủ bạn đến từ đường dẫn, vì nó sẽ sử dụng lại cài đặt hiện được .ssh/environmentđặt. Nó thậm chí có thể xử lý các vòng lặp, tôi sẽ để nó như một bài tập cho người đọc :)


1

Bạn đã thử / nhìn vào màn hình chưa?

Đó không phải là chính xác những gì bạn muốn, nhưng bạn có thể đưa ra màn hình -la bất cứ khi nào bạn muốn có được danh sách mà bạn mong muốn.


Xin chào Nada, đối với tôi, chạy screenscreen -ladường như tạo ra kết quả tương tự
Alex
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.