Regrec trong .ssh / config


12

Trong công việc, tôi thường phải đăng nhập vào các máy chủ theo sơ đồ đặt tên chung, ví dụ qc01- qc12, hc01- hc10, v.v. Tất cả những thứ này cần để có cùng giá trị cấu hình trong máy tính xách tay của tôi .ssh/config. Tất nhiên, tôi có thể sử dụng các mục cho đội chủ nhà qc*hc*, nhưng tôi đang tự hỏi nếu thay vào đó là bằng cách nào đó có thể sử dụng biểu thức thông thường?

Câu trả lời:



5

Xin vui lòng, xem PATTERNSphần trong man ssh_config.

Câu trả lời dài là: Không, bạn không thể, trừ khi bạn vá lỗi của bạn sshđể hỗ trợ điều đó.


Tôi không thể tìm thấy phần này trong của tôi man ssh_config.
Patryk


Phiên bản nào đã xuất hiện?
vonbrand

1

Bạn có thể sử dụng đầy đủ các biểu thức chính quy trong của bạn ssh_config.

Các tài liệu liên quan là IMO rất khó đọc và hiểu. Tôi chỉ hiểu điều đó vì tôi có hơn 13 năm kinh nghiệm Linux và hơn 8 năm sử dụng ssh. Vì vậy, đây là tóm tắt của tôi về các tài liệu:

  • man ssh_config mô tả một tính năng được gọi là Match
  • sau đó, có một tính năng được gọi là execcho phép bạn sử dụng lệnh shell tùy ý để xác định kết quả khớp
  • chuyển các tham số đầu vào cho lệnh shell tùy ý là có thể và được mô tả trong phần có nhãn TOKENS

Trong trường hợp của tôi, tôi đã sử dụng trong~/.ssh/config :

Match exec "echo %h | grep -q 'NAME[0-9]\+$'"
    User USER
    IdentityFile /path/to/identity/file
    Hostname %h.fully.qualified.domain.name

Kiểm tra phải được thực hiện với một cái gì đó khó khăn như thế này. Và để làm bài kiểm tra đó bạn gọi ssh -vvv HOSTNAME. Điều này sẽ hiển thị chính xác những gì đang xảy ra, và liệu mới của bạn Matchđược thực hiện chính xác.


0

Mở rộng câu trả lời từ Trevor:

Các máy chủ phức tạp hơn cũng có thể, như khớp foo123.123foo10.10trong một quy tắc KHÔNG CÓ mục nhập DNS cho tên máy chủ được sử dụng:

Match exec "echo %h | grep -q 'foo[0-9]\+.[0-9]\+$'"
    Port 1234 # just to show it can be paired with non-default ports too,
              # see %p in man ssh_config
    ProxyCommand /usr/bin/nc 10.10.$(echo %h | sed -e 's/foo//') %p

Sử dụng ProxyCommand để thao tác nội dung của% h bằng shell và kết nối với cổng bên phải thông qua một mạng mèo. Bằng cách này, bạn có thể tạo các cài đặt trước cho danh mục máy chủ mà không cần tạo các mục riêng lẻ.

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.