Kết nối với Linux bằng tên chứ không phải IP


18

Tôi mới dùng Linux (hiện đang chạy Ubuntu 10.04) và tôi vừa hoàn thành việc thiết lập quyền truy cập SSH vào Máy Linux của mình. Hiện tại, tôi phải sử dụng ssh root@x.x.x.xđể kết nối nhưng thay vào đó có thể trao đổi IP cho tên máy tính (như trong Windows với \\name) hoặc một tên miền (như computername.example.com).

Tôi thực sự không biết bắt đầu từ đâu để bất kỳ trợ giúp sẽ được đánh giá cao nhất. Hãy đi từ từ, như đã đề cập - tôi vẫn còn mới với điều này.


CHỈNH SỬA 1

Hoàn toàn quên đề cập rằng tôi đang cố gắng kết nối từ Windows 7 (thông qua PuTTY) - xin lỗi.


Bạn đang cố gắng kết nối chỉ từ trong mạng LAN của bạn hoặc từ bất cứ nơi nào trên thế giới?
Karl Bielefeldt

6
Ngoài ra, FYI cho phép các kết nối thông qua ssh với quyền root thường được coi là một ý tưởng bảo mật tồi. Bạn nên đăng nhập như một người dùng thông thường và sử dụng su hoặc sudo từ đó.
Karl Bielefeldt

Cả mạng LAN của tôi và thế giới (mặc dù tôi nghĩ rằng tôi biết cách thiết lập quyền truy cập thế giới nên câu hỏi này dành cho mạng LAN nhiều hơn) - và root @ là ví dụ nhiều hơn bất cứ điều gì - tôi thực sự sử dụng người dùng.
Ryall

Vô số câu trả lời tuyệt vời - cảm ơn tất cả mọi người - mặc dù tôi phải chọn một câu để tôi chọn chi tiết nhất.
Ryall

Câu trả lời:


36

Các giao thức khám phá LAN không cấu hình, theo thứ tự ưu tiên:

  • mDNS
    • Được sử dụng chủ yếu bởi các sản phẩm của Apple và một số chương trình Linux, nhưng cũng có sẵn cho Windows và có thể các nền tảng khác; sử dụng đa hướng IP.
    • Cung cấp cả tra cứu tên và khám phá dịch vụ.
    • Tên máy chủ luôn ở dạng name.local.
    • Phần mềm:
      • vốn được hỗ trợ trên Windows 10.1709 trở lên (phải được kích hoạt qua Registry);
      • Bonjour trên Windows cũ hơn;
      • Avahi vớinss_mdns trên Linux;
      • vốn được hỗ trợ trên OS X và iOS (và, được cho là, Android).
  • LLMNR
    • Được sử dụng để phân giải tên bởi Windows Vista trở lên, như là một thay thế hiện đại cho các dịch vụ tên NetBIOS.
    • Rất giống với mDNS, nhưng có ít tính năng hơn - đặc biệt là thiếu khám phá dịch vụ (Windows sử dụng giao thức WS-Discovery cho điều đó).
    • Sử dụng tên máy chủ trần (như NBNS, nhưng không giống như mDNS).
    • Phần mềm:
      • Được hỗ trợ bởi Windows Vista và mới hơn;
      • systemd-resolvedvới nss_resolve(một phần của systemd 216) trên Linux. .
  • Dịch vụ tên NetBIOS
    • Một phần của bộ giao thức mạng NetBIOS được sử dụng bởi Windows, OS / 2, MS-DOS ... Vẫn đang được sử dụng. Không phải là một lý do để bắt đầu sử dụng nó trên các mạng mới.
    • Cung cấp độ phân giải tên và khám phá dịch vụ (ở một mức độ nào đó) - còn gọi là "Vùng lân cận mạng" hoặc "Địa điểm mạng của tôi" trong Windows.
    • Sử dụng các chương trình phát sóng IPv4 (hơi trò chuyện) và có giao thức "bầu cử trình duyệt" phức tạp và ngu ngốc của riêng mình để giảm độ chói. Không hỗ trợ IPv6 nào cả.
    • Phần mềm:
      • Được hỗ trợ tự nhiên trên Windows và OS / 2;
      • nmbdvới nss_wins(một phần của Samba ) trên Linux và BSD;
      • Rõ ràng OS X cũng hỗ trợ nó?

Các phương thức thường được cấu hình sẵn cho bạn:

  • DNS sử dụng tên miền cục bộ (nội bộ)
    • Cổng nhà có xu hướng tích hợp sẵn này, như là một phần của bộ đệm DNS cục bộ. Thông thường, nó chỉ là thông thường dnsmasq, mà bạn có thể chạy thủ công nếu bạn đang thiết lập một cổng dựa trên Linux / BSD.
    • Họ lấy tên máy chủ từ yêu cầu DHCP của bạn, đăng ký nó trong dnsmasq dưới một tên miền như homevà tự cung cấp làm máy chủ DNS chính (hoạt động như bộ đệm DNS).
    • Hoạt động theo mặc định với hầu hết các hệ điều hành, nhưng chỉ với DHCP (cổng không biết tên máy chủ của máy chủ IP tĩnh) và nói chung có xu hướng khá dễ vỡ trong trải nghiệm của tôi.
    • Phần mềm:
      • Một máy khách DHCP thông thường trên máy chủ. Phải gửi tùy chọn tên máy chủ.
      • dnsmasqtrên cổng. (Thiết lập lớn hơn có thể sử dụng dhcpd+ named.)

Các phương pháp liên quan đến cấu hình thủ công:

  • DNS sử dụng tên miền của riêng bạn
    • Hoạt động ở khắp mọi nơi. (Tuy nhiên, sẽ không giúp bạn thực sự kết nối qua Internet.)
    • DNS động có thể nếu bạn sử dụng DHCP và điều khiển máy chủ DNS; mặt khác, tất cả dữ liệu là tĩnh.
    • Cần sở hữu một tên miền (sẽ tốn một vài đô la).
  • tên miền phụ DNS miễn phí
    • Vẫn là DNS, chỉ miễn phí (hoặc rẻ hơn nhiều so với tên miền), nhưng cũng khá hạn chế. Các dịch vụ như FreeDNSDyn cung cấp đăng ký các tên miền phụ riêng lẻ trong một miền mà họ kiểm soát (ví dụ myhost.dyndns.com).
      • Cách quá thường xuyên, tên miền phụ đã được chọn bởi người khác ...
    • Cập nhật DNS động thường được cho phép (kiểu DynDNS).
  • /etc/hosts
    • Một tệp văn bản liệt kê địa chỉ IP - cặp tên máy chủ, phải được cấu hình thủ công trên mỗi máy khách.
    • ( %SystemRoot%\system32\drivers\etc\hoststrên Windows)
  • Cấu hình SSH
    • Trường "Tên máy chủ" trong PuTTY hoặc ~/.ssh/configtrên OpenSSH.
    • Phải được cấu hình bằng tay.
  • PostIt ghi chú trên bàn của bạn
    • Rất rẻ. Không có chính sách đặt tên. Kiểu dữ liệu vô hạn.
    • Khá không đáng tin cậy. Phải được phân phối thủ công. Không có TTL, thường dẫn đến thông tin cũ bị lưu trong bộ nhớ cache trong nhiều tháng cho đến khi có người thông báo. Các thuật toán truy vấn không hiệu quả. Phản hồi cho các truy vấn có xu hướng bị mất dễ dàng, đôi khi chỉ để lại một bản ghi keo trên màn hình của bạn. (Ba tháng sau, bạn có thể thấy chúng được đệm phía sau bàn của bạn.)

7
Haha, tôi thích tùy chọn ghi chú PostIt :)
Ryall

1
+1 cho mDNS / Avahi. Avahi được cài đặt theo mặc định trên nhiều bản phát hành, nhưng có thể là bản cài đặt gói cho bạn.
Broam

1
Trong Debian, bạn sẽ phải cài đặt Avahi theo cách thủ công.
Martin Uting

2
@grawity Câu trả lời hay. Một điều cần cải thiện: Hãy nhớ rằng DNS / DHCP cục bộ hoạt động hoàn toàn tốt mà không cần tên miền đã đăng ký. Chỉ cần ném Raspberry PI dưới bàn của bạn và thiết lập một máy chủ nhỏ với ví dụ dnsmasq.
nghịch lý

1
@paradoxon: Cảm ơn, tôi quên đề cập đến điều đó. (Hầu hết các cổng nhà đã chạy dnsmasq hoặc một cái gì đó tương tự nhưng crappier.)
user1686

4

Hai lựa chọn.

  • Tất cả các dịch vụ:

Đặt một mục cho nó trong /etc/hosts. Đừng chạm vào các dòng hiện có, thêm một dòng mới.

  • chỉ ssh:

Thêm một khổ Hostthơ ~/.ssh/configvới tên bạn muốn sử dụng, sau đó thêm các tùy chọn mong muốn bên dưới đó. Xem man 5 ssh_configđể biết thêm chi tiết.

Host myserver
    Hostname 192.168.123.234
    Protocol 2

4

Nếu bạn muốn truy cập hộp Linux từ một máy tính tùy ý, bạn sẽ cần một tên miền. Sử dụng dịch vụ DNS động để trỏ tên miền vào máy tính Linux của bạn (hoặc bộ định tuyến được kết nối). Khi bạn thiết lập tính năng này, nó sẽ mang lại cho bạn lợi ích bổ sung mà không phải lo lắng về IP của máy tính Linux của bạn thay đổi.


1
Chỉ cần làm rõ, địa chỉ IP của máy tính vẫn có thể thay đổi (tùy thuộc vào cách ISP của bạn quản lý nội dung đó), nhưng bạn sẽ không phải lo lắng về điều đó vì dịch vụ DNS động cung cấp một tên miền luôn ánh xạ tới bất cứ thứ gì hiện tại Địa chỉ IP của máy tính là.
David Z

4

Từ Windows 7 (theo chỉnh sửa của bạn) ...

Start -> Run -> notepad c:\windows\system32\drivers\etc\hosts

Khi notepad bắt đầu, đi đến cuối tệp và thêm địa chỉ IP và tên máy chủ của bạn:

x.x.x.x    mylinuxhostname mylinuxhostname.domain.com

Lưu tệp, sau đó thử ping nó từ một dấu nhắc lệnh:

c:\> ping mylinuxhostname
c:\> ping mylinuxhostname.domain.com

Điều này sẽ chỉ hoạt động từ mạng LAN của bạn. Kết nối với nó từ "thế giới" (theo nhận xét của bạn được thêm vào) là một con thú hoàn toàn khác liên quan đến DNS (dyndns, godaddy, v.v.) và cấu hình bộ định tuyến như bản dịch địa chỉ mạng (NAT) et al.


2

Bạn sẽ muốn điều tra Samba hoặc Winbind. Mạng all-Linux của tôi (bao gồm cả bộ định tuyến) có thể nói chuyện với nhau bằng tên máy chủ, nhưng tôi không chắc làm thế nào để nói với Windows tên của máy Linux là gì.


1
Mạng của tôi làm điều này vì Avahi (mạng Zeroconf). Tôi không biết khả năng tồn tại của máy khách / máy chủ Zeroconf trên Windows.
Broam

1

Tôi cũng đang sử dụng Ubuntu 10.04 và tôi có thể kết nối với máy của mình bằng tên của họ. Giả sử tôi có các máy tính tên ernie và bert trên cùng một mạng:

Lời nhắc của tôi trông như thế này trên ernie:

ernie:~$ 

Nếu tôi gõ này:

ernie:~$ ssh root@bert.local

Tôi sẽ root trên bert:

bert:~#

Tôi làm điều này giữa hai máy ubfox, nhưng tôi đoán nó cũng sẽ hoạt động tốt. (Tôi không biết về việc kết nối với các cửa sổ từ Ubuntu, xem các câu trả lời khác về samba.)

Bạn phải cài đặt sshd trong Ubuntu để nó hoạt động: sudo apt-get install openssh-server


1
Điều này là do Avahi, một trình nền Zeroconf được cài đặt theo mặc định. Nó sẽ không giúp anh ta trên Windows, trừ khi anh ta có một khách hàng vì một số lý do khác (có thể iTunes cài đặt một cái? Tôi không thể nói.)
Broam
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.