Tôi có thể định cấu hình Ubuntu để nối một tên miền vào cuối yêu cầu tên máy chủ ssh không?


9

Tôi có nhiều máy chủ và tất cả đều kết thúc với cùng một máy chủ. xx-001 và có tự động nối thêm máy chủ.company.net không?

Vì vậy, tôi muốn gõ

ssh user@vded-xx-001

và có thực sự kết nối với

ssh user@vded-xx-001.servers.company.net

Tôi đã thử đặt tên miền tìm kiếm DNS của mình thành server.company.net, trong / etc / network / interface, nhưng điều này không đạt được kết quả mong muốn.

Bất cứ ai cũng có thể chỉ cho tôi đi đúng hướng?

Cảm ơn trước


Có bất kỳ lý do nào bạn không thể chỉ thêm search company.netvào /etc/resolv.conf không?
Hennes

@Hennes Thêm công ty tìm kiếm.net và máy chủ.company.net vào decv.conf đã hoạt động. Tuy nhiên, có một cảnh báo ở đầu tệp rằng các thay đổi của tôi sẽ bị ghi đè, nếu đây là trường hợp tôi phải làm cho chúng vĩnh viễn?
Tim Lassie Freeborn

1
Tôi rất thích trả lời câu hỏi đó và rake trong đại diện phụ, nhưng bài đăng này đã trả lời khá tốt ::-) Askubfox.com/questions/157154/ Lỗi
Hennes

Trên thực tế, trái với những gì được thảo luận trong câu hỏi đó, thông thường tốt nhất là bao gồm danh sách miền tìm kiếm trong /etc/network/interfaces(sử dụng dns-searchtùy chọn) hoặc trong trường cấu hình kết nối NetworkManager Search domains.
jdthood

Thay vì gây rối với cấu hình trình phân giải cục bộ , giải pháp này đơn giản và dễ mang theo hơn.
OrangeDog

Câu trả lời:


19

Có lẽ bạn đã giải quyết vấn đề này, nhưng có lẽ sau này nó có thể giúp được ai đó: bạn không cần phải sử dụng giải pháp của mình, chỉ có thể sử dụng cái gì đó như thế này trong ~ / .ssh / config:

Host vded-*-001 test-*-something-fixed-*
        HostName %h.servers.company.net
        User someusername

Vì vậy, sau này bạn chỉ có thể sử dụng:

ssh vdev-alotofstuff-001
ssh vdev-somethingels-001
ssh test-02-something-fixed-somethingelse

Trân trọng,


Đây phải là câu trả lời được chấp nhận.
slm

Đây là một cách để giải quyết vấn đề, nhưng không giải quyết được vấn đề về độ phân giải tên trên toàn hệ thống, nó chỉ giải quyết vấn đề cho tên máy chủ ssh. Cách tốt nhất đối với tôi là có thể có được tên máy chủ phù hợp trên toàn hệ thống và không phải tùy chỉnh một dịch vụ cụ thể (ssh) để có thể giải quyết các tên máy chủ cụ thể
Philippe Gachoud

1
Chỉ trong trường hợp tôi quên và tìm kiếm lại điều này sau, nếu bạn muốn cho phép cả tên ngắn và dài trong khi chia sẻ cùng một cấu hình, chỉ cần chỉ định mục nhập đầu tiên Host vded-*.servers.company.net, với Hostname %h. Sau đó, trong mục nhập thứ 2 Host vded-*với Hostname %h.servers.company.netvà tất cả các thông số khác như Người dùng, Danh tính, v.v.
bksunday

6

Đây là giải pháp dễ nhất. Nó hoạt động cho tất cả các máy chủ, không yêu cầu root hoặc truy cập vào bất kỳ hệ thống DNS / trình phân giải nào.

Thêm vào đầu ~/.ssh/configtệp của bạn (hoặc tạo nếu nó chưa tồn tại):

CanonicalizeHostname yes
CanonicalDomains servers.company.net

Tài liệu ( man 5 ssh_config):

Canonicalizehostname

Kiểm soát xem chuẩn hóa tên máy chủ rõ ràng được thực hiện. Mặc định, không , không thực hiện bất kỳ việc viết lại tên nào và để cho trình phân giải hệ thống xử lý tất cả các tra cứu tên máy chủ. Nếu thiết lập để sau đó, cho các kết nối mà không sử dụng một ProxyCommand , ssh sẽ cố gắng canonicalize tên máy chỉ định trên dòng lệnh bằng cách sử dụng CanonicalDomains hậu tố và CanonicalizePermittedCNAMEs quy tắc. Nếu Canonicalizehostname được đặt thành luôn , thì chuẩn hóa cũng được áp dụng cho các kết nối được ủy quyền.

Nếu tùy chọn này được bật, thì các tệp cấu hình sẽ được xử lý lại bằng cách sử dụng tên đích mới để chọn bất kỳ cấu hình mới nào trong các khổ thơ Máy chủKết hợp .


Nó hoạt động tốt nhất cho tôi. Bạn không phải thêm CanonicalDomains, chỉ hàng đầu tiên. Cách này hoạt động ngay cả khi bạn kết nối với các mạng khác.
Adam Wallner

2
@AdamWallner nếu bạn không thêm CanonicalDomainsthì nó sẽ chỉ hoạt động trên miền tìm kiếm hiện tại của mạng. Nếu bạn làm (và bạn có thể liệt kê nhiều) thì nó sẽ hoạt động để giải quyết tất cả các tên máy chủ đó, trên bất kỳ mạng nào bạn có thể kết nối.
OrangeDog

2

Có, bạn có thể làm điều này bằng cách tạo một tệp cấu hình có tên ~/.ssh/configvà nhập các nội dung sau:

Host vded-xx-001
User user
Port 22
HostName vded-xx-001.servers.company.net

Bây giờ bạn chỉ cần nhập cái này (thậm chí bạn không cần tên người dùng nữa):

$ ssh vded-xx-001

Điều này cũng hoạt động với tiện ích dòng lệnh scp:

$ scp filename vded-xx-001:/path/

Tôi biết rằng điều này hoạt động cho các máy chủ riêng lẻ nhưng tôi có hàng trăm và hy vọng tôi có thể tạo quy tắc chọn trên VDED- * và sau đó cho tên máy chủ lưu trữ là host.servers.company.net
Tim Lassie Freeborn

1
@TimLassieFreeborn: bạn có thể viết một tập lệnh tạo các mục cần thiết cho tệp cấu hình. Tôi không biết nếu bạn có thể làm điều đó một cách linh hoạt, mặc dù.
Flimm

@TimLassieFreeborn xem câu trả lời của tôi
OrangeDog

2

Giải pháp cho vấn đề của tôi là thêm miền tìm kiếm vào resolv.conf:

search servers.company.net

Điều này đã cho phép tôi vào

ssh user@vded-xx-001

cho bất kỳ máy chủ nào của tôi và nó kết nối với đúng địa chỉ.

Cảm ơn bạn @Hennes đã trả lời


2
Giả sử bạn đang chạy Ubuntu 12.04 trở lên, bạn không nên chỉnh sửa trực tiếp /etc/resolv.conf vì tiện ích phân giải tạo ra tệp đó. (Trên thực tế, nó tạo /run/resolvconf/resolv.conf mà /etc/resolv.conf là một liên kết tượng trưng.) Thay vào đó, bạn nên định cấu hình cài đặt DNS thông qua trình cấu hình giao diện, ifup hoặc NetworkManager. Ifup : Chỉnh sửa / etc / mạng / giao diện và thêm một dns-search servers.company.netdòng vào khổ thơ cho giao diện mạng bên ngoài của máy. NM : Thêm servers.company.netvào Search domainstrường trên tab IPv4 để kết nối.
jdthood

Nếu /etc/resolv.confkhông phải là một liên kết tượng trưng ../run/resolvconf/resolv.conftrên máy của bạn thì hãy chạy sudo dpkg-reconfigure resolvconfđể khôi phục liên kết tượng trưng.
jdthood

1

Nếu bạn đang sử dụng danh tính SSH - và với nhiều máy chủ thì nó đáng để xem xét - thì như OrangeDog đã nói, cài đặt Canonicalisehostname và CanonicaliseDomains cũng sẽ cho phép khớp với mục nhập @ cert-thẩm quyền trong các máy chủ đã biết của bạn

entry_hosts @ cert-thẩm quyền * .example.com ssh-rsa AAAddadfkjaeio ...

không có tùy chọn Canonicalise bạn cần sử dụng "ssh host.example.com"

Với các tùy chọn Canonicalise "ssh myhost" sẽ khớp.

Tôi đã thêm điều này dưới dạng nhận xét cho câu trả lời của OrangeDogs nếu đại diện cho phép ...


0

Để có giải pháp nhanh chóng hoạt động trên các chương trình khác nhau, bạn cũng có thể đặt tên miền vded-xx-001chuyển hướng đến một địa chỉ IP cụ thể, bằng cách chỉnh sửa /etc/hostsđể bao gồm một dòng như thế này:

173.194.41.90  vded-xx-001

Điều này hoạt động trong trình duyệt của bạn: http://vded-xx-001/

Cũng như với các tiện ích dòng lệnh như SSH:

$ ssh user@vded-xx-001

(Cá nhân tôi thích giải pháp cấu hình SSH hơn .)


0

Để phân giải tên miền trên toàn hệ thống, tôi muốn đặt mọi thứ một lần trong mạng của mình. Vì vậy, tôi đã đặt trong Máy chủ DHCP tên miền và Máy chủ DNS để nó cung cấp cho tất cả các máy quyền resolv.confbao gồm cả

  • IP máy chủ DNS chính
  • Miền
  • chỉ thị tìm kiếm

Điều này phụ thuộc vào Máy chủ DHCP và cấu hình mạng mà bạn muốn ... Cá nhân tôi không thích cấu hình tùy chỉnh của máy khi có gì đó chung với mạng

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.