Sự khác biệt giữa Host và HostName trong SSH Config là gì?


23

Trang người đàn ông nói điều này:

Tổ chức

Máy chủ Hạn chế các khai báo sau (tối đa từ khóa Máy chủ tiếp theo) chỉ dành cho những máy chủ phù hợp với một trong các mẫu được đưa ra sau từ khóa. Nếu có nhiều hơn một mẫu được cung cấp, chúng nên được phân tách bằng khoảng trắng. Một `* 'như một mẫu có thể được sử dụng để cung cấp mặc định toàn cầu cho tất cả các máy chủ. Máy chủ lưu trữ là đối số tên máy chủ được cung cấp trên dòng lệnh (nghĩa là tên không được chuyển đổi thành tên máy chủ được chuẩn hóa trước khi khớp).

Một mục nhập mẫu có thể bị phủ định bằng cách thêm tiền tố vào nó bằng dấu chấm than (`! '). Nếu mục nhập phủ định được khớp, thì mục Máy chủ bị bỏ qua, bất kể có bất kỳ mẫu nào khác trên dòng phù hợp hay không. Do đó, các kết quả phủ định rất hữu ích để cung cấp ngoại lệ cho các kết hợp ký tự đại diện.>

Xem THỰC TRẠNG để biết thêm thông tin về các mẫu.

Tên máy chủ

HostName Chỉ định tên máy chủ thực để đăng nhập. Điều này có thể được sử dụng để chỉ định biệt danh hoặc viết tắt cho máy chủ lưu trữ. Nếu tên máy chủ chứa chuỗi ký tự `% h ', thì tên này sẽ được thay thế bằng tên máy chủ được chỉ định trên dòng lệnh (điều này rất hữu ích để thao tác các tên không đủ tiêu chuẩn). Mặc định là tên được đặt trên dòng lệnh. Địa chỉ IP số cũng được cho phép (cả trên dòng lệnh và thông số kỹ thuật của HostName).

Ví dụ: khi tôi muốn tạo Cấu hình SSH cho GitHub, Host và HostName phải tương ứng là gì?


3
Về bản chất: Hostlà chuỗi mà người dùng đưa ra làm đầu vào trên CLI khi gọi SSH; HostNamelà chuỗi mà máy khách SSH sẽ xuất qua mạng khi cố gắng kết nối với máy chủ.
sampablokuper

Câu trả lời:


15

Đối với github.com, bạn ~/.ssh/configcó thể trông như thế này

Host github.com
    IdentityFile ~/.ssh/key_name_for_github

Đối với tên máy chủ: như người đàn ông nói, nó cho phép bạn chỉ định viết tắt cho máy chủ lưu trữ. Ví dụ, nếu bạn ~/.ssh/configtrông như thế này

Host host1
    HostName host1.example.com
Host host2
    HostName anotherdomain.com

Sau đó, khi bạn gõ

  • ssh host1bạn thực sự đăng nhập vào host1.example.com
  • ssh host2đăng nhập vào otherdomain.com

Tôi đoán rằng bạn có nghĩa là 'Tên máy chủ' thay vì 'Máy chủ' trong ~/.ssh/configví dụ thứ hai của bạn ?
Dave

6

Trong cách sử dụng đơn giản:

Host là tên máy chủ thực tế và không có HostName

HOẶC LÀ

Hostlà biệt danh của máy chủ lưu trữ và HostNamelà tên máy chủ thực tế.

Ví dụ đơn giản:

$ cat ~/.ssh/config
Host dev
    Hostname <hostname>
    User <username>
    IdentityFile <path_to_private_key>

$ ssh dev
# Equivalent to "ssh -i <path_to_private_key> <username>@<hostname>"

Lưu ý: Trang nam đúng về mặt kỹ thuật, nó chỉ được nói một chút lạ lùng. Tôi sẽ thêm một vài từ cho rõ ràng:HostName Specifies the real host name to log into. This can be used *TOGETHER WITH 'HOST'* to specify nicknames or abbreviations for hosts.


1

Gần đây tôi muốn làm một cái gì đó với máy chủ và tên máy chủ, nhưng quên cú pháp chính xác ... nhưng việc hiểu về nó là một mớ hỗn độn và trang man không quá hữu ích. Vì vậy, giả sử có những người khác có cùng nhu cầu, đây là những mẩu tin của tôi.

Máy chủ chỉ định đối số dòng lệnh và có thể được coi là a) tên máy chủ / IP thực tế, b) tốc ký, c) bí danh. Tên máy chủ là tên máy chủ / IP thực của máy bạn đang kết nối. Trong trường HostName, bạn có thể sử dụng% h làm chuỗi tên máy chủ bạn chỉ định trên dòng lệnh. (Đây là phần tôi muốn sử dụng trong ví dụ của mình.)

Vì vậy, giả sử bạn có một bộ máy chủ lưu trữ tên máy chủ bắt đầu bằng my-proj-host -... và tất cả chúng đều nằm trong miền .my.proj.domain.com và tôi cần đăng nhập vào chúng bằng khóa ssh cụ thể my-proj-id-rsa và ID người dùng cụ thể my-proj-user. Để làm cho cuộc sống của tôi dễ dàng hơn, tôi sẽ thêm tệp sau vào tập tin ~ / .ssh / config

Lưu trữ my-proj-host *

Tên máy chủ% h.my.proj.domain.com

Người dùng my-proj-user

Danh tínhFile ~ / .ssh / my-proj-id-rsa

Bây giờ, tôi có thể gõ

ssh my-proj-host-1234

Nếu không có cấu hình, đó sẽ là

ssh -i ~ / .ssh / my-proj-id-rsa my-proj-user@my-proj-host-1234.my.proj.domain.com

tiết kiệm một chút gõ (và lỗi chính tả).

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.