Nhiều 'Máy chủ *' trong ssh_config?


27

Sự hiểu biết của tôi về cách thức hoạt động của ~ / .ssh / config là mỗi dòng 'Máy chủ' có hiệu lực đối với bất kỳ máy chủ nào khớp sau thời điểm đó trong tệp cấu hình.

Tôi có một số máy chủ cá nhân và máy chủ làm việc mà tôi cần kết nối. Tôi đang cố gắng làm một cái gì đó như sau:

# Cài đặt chung
Điều khiển tự động
ControlPath ~/.ssh/controlmaster/%r@%h:% p
Chuyển tiếp Có
Chuyển tiếpX11 có
Không có GSSAPIA
PubkeyAuthentication có

# Máy chủ cá nhân
Máy chủ *
Người dùng harleypig
Danh tínhFile ~ / .ssh / Personal_id_rsa

Máy chủ lưu trữ1
Tên máy chủ lưu trữ1.com

Máy chủ lưu trữ2
Tên máy chủ lưu trữ2.com

# Máy chủ làm việc
Máy chủ *
Người dùng alan.young
Danh tínhFile ~ / .ssh / work_id_rsa

Máy chủ lưu trữ1
Tên máy chủ work1.companyserver.com

Máy chủ lưu trữ2
Tên máy chủ work2.companyserver.com

Máy chủ *
Người dùng

Máy chủ dev1
Tên máy chủ dev1.companyserver.com

Máy chủ dev2
Tên máy chủ dev2.companyserver.com

Các tài liệu dường như chỉ ra rằng host1 và host2 nên sử dụng 'Personal_id_rsa' và người dùng harleypig. work1, work2, dev1 và dev2 nên sử dụng 'work_id_rsa' và hai người đầu tiên nên là người dùng 'alan.young' và dev1 và dev2 nên là người dùng 'devuser'

Tuy nhiên, điều này không xảy ra. Bất cứ điều gì 'Máy chủ *' tôi đặt đầu tiên là những gì tất cả các máy chủ sau cố gắng kết nối. Tôi có hiểu lầm hay thiếu thứ gì không?


Cảm ơn bạn, giữa cả hai câu trả lời này tôi đã có thể làm cho các kết nối của tôi hoạt động.
harleypig

Câu trả lời:


36

Từ ssh_confighướng dẫn :

Vì giá trị thu được đầu tiên cho mỗi tham số được sử dụng, nên khai báo cụ thể hơn về máy chủ ở gần đầu tệp và mặc định chung ở cuối.

Vì vậy, trong ví dụ của bạn, tất cả các máy chủ sẽ sử dụng User harleypigIdentityFile ~/.ssh/personal_id_rsa.

Hãy nghĩ về các Hostchỉ thị với ký tự đại diện là dự phòng: chỉ sử dụng các cài đặt sau nếu chúng chưa được đặt. Bạn cần phải viết một cái gì đó như thế này:

Host host1
Hostname host1.com
Host host2
Hostname host2.com
Host host*
User harleypig
IdentityFile ~/.ssh/personal_id_rsa

Bạn có thể đặt nhiều mẫu trên một Hostdòng nếu một tập hợp các bí danh máy chủ nhất định không thể khớp với các ký tự đại diện, vd Host host* more* outlier.


15

Bạn chắc chắn đang làm sai.

  • Bạn nên luôn luôn đặt Host *như là mục cuối cùng.
  • Bạn không thể có nhiều Host *mục

Nếu máy công việc của bạn có định dạng tên mà bạn có thể khái quát hóa để nhắm mục tiêu chỉ các máy công việc, ví dụ: machine1.work.com, host.work.com, fileserver.work.com thì bạn có thể nhắm mục tiêu các máy làm việc của mình dưới dạng:

Host *.work.com
User alan.young
IdentityFile ~/.ssh/work_id_rsa

Áp dụng tương tự cho các máy cá nhân của bạn.


Đối với tôi, đặt Host *ở đầu tập tin có vẻ hoạt động tốt. Có lẽ thực tế là bạn đang sử dụng một ký tự đại diện hơn thực tế rằng đó là mục đầu tiên khi ưu tiên chúng?
Zaz

Btw, Host *.work.commột cú pháp không hợp lệ. Nó chỉ hoạt động theo cách khác:Host myserver*
Daniel Andrei Mincă

3
@ MincăDanielAndrei nó hoạt động theo cả hai cách, nó chỉ là một biểu thức ký tự đại diện và bạn có thể sử dụng nó như bất kỳ ký tự đại diện nào khác. Máy chủ git-codecommit. *. Amazonaws.com Đây là một ví dụ hoạt động từ ~ / .ssh / config của tôi
Hameedullah Khan

@HameedullahKhan nghiêm túc, tôi đã thử nó và nó không đáp ứng. Nếu bạn làm điều Host *subdomain.comđó sẽ không đáp ứng.
Daniel Andrei Mincă

1
@ MincăDanielAndrei Hành vi đó được ghi lại trong các trang nam, nếu nó không hoạt động (đối với tôi cũng không) thì đó là một lỗi.
goetzc
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.