Conecte-se ao Linux por nome e não por IP

18

Eu sou novo no Linux (atualmente executando o Ubuntu 10.04) e acabei de configurar o acesso SSH à minha máquina Linux. Atualmente, tenho que usar ssh [email protected]para conectar, mas preferiria trocar o IP pelo nome do computador (como no Windows com \\name) ou por um nome de domínio (como computername.example.com).

Eu realmente não sei por onde começar, então qualquer ajuda seria muito apreciada. Por favor, vá devagar, como mencionado - eu ainda sou novo nisso.


EDIT 1

Esqueci completamente de mencionar que estou tentando conectar no Windows 7 (via PuTTY) - desculpe.

Ryall
fonte
Você está tentando se conectar apenas a partir da sua LAN ou de qualquer lugar do mundo?
Karl Bielefeldt
6
Além disso, o FYI que permite conexões via ssh como root geralmente é considerado uma má idéia em termos de segurança. É recomendável fazer login como um usuário comum e usar su ou sudo a partir daí.
Karl Bielefeldt
Tanto a minha LAN quanto o mundo (embora eu ache que sei configurar o acesso ao mundo, portanto esta pergunta é mais para a LAN) - e a raiz @ foi mais um exemplo do que qualquer coisa - na verdade, uso um usuário.
Ryall
Cargas de ótimas respostas - obrigado a todos - embora eu tivesse que escolher uma, então escolhi a mais detalhada.
Ryall

Respostas:

36

Protocolos de descoberta de LAN de configuração zero, na ordem de preferência:

  • mDNS
    • Usado principalmente por produtos Apple e alguns programas Linux, mas também disponível para Windows e possivelmente outras plataformas; usa multicast IP.
    • Fornece pesquisa de nome e descoberta de serviço.
    • Os nomes de host estão sempre no formulário name.local.
    • Programas:
      • nativamente suportado no Windows 10.1709 e posterior (deve ser ativado via Registro);
      • Bonjour no Windows antigo;
      • Avahi com nss_mdnsno Linux;
      • nativamente suportado no OS X e iOS (e, supostamente, no Android).
  • LLMNR
    • Usado para resolução de nomes pelo Windows Vista e superior, como uma alternativa moderna aos serviços de nomes NetBIOS.
    • Muito semelhante ao mDNS, mas possui menos recursos - em particular, não possui descoberta de serviço (o Windows usa o protocolo WS-Discovery para isso).
    • Usa nomes de host simples (como NBNS, mas diferente do mDNS).
    • Programas:
      • Suporte nativo pelo Windows Vista e posterior;
      • systemd-resolvedcom nss_resolve(parte do systemd 216) no Linux. .
  • Serviços de nome NetBIOS
    • Parte do antigo conjunto de protocolos de rede NetBIOS usado pelo Windows, OS / 2, MS-DOS ... Ainda em uso. Não é uma desculpa para começar a usá-lo em novas redes.
    • Fornece resolução de nomes e (até certo ponto) descoberta de serviço - também conhecida como "Ambiente de rede" ou "Meus locais de rede" no Windows.
    • Usa difusões IPv4 (um tanto tagarelas) e possui seu próprio e complexo e estúpido protocolo de "eleição de navegador" para reduzir as chats. Não há suporte para IPv6.
    • Programas:
      • Suporte nativo no Windows e OS / 2;
      • nmbdcom nss_wins(parte do Samba ) em Linux e BSD's;
      • Aparentemente, o OS X também suporta nativamente?

Métodos geralmente pré-configurados para você:

  • DNS usando um nome de domínio local (interno)
    • Os gateways domésticos tendem a ter esse recurso interno, como parte do cache DNS local. Muitas vezes, é apenas regular dnsmasq, que você pode executar manualmente se estiver configurando um gateway baseado em Linux / BSD.
    • Eles pegam o nome do host da sua solicitação DHCP, registram-no no dnsmasq em um domínio como homee se oferecem como o servidor DNS principal (atuam como cache DNS).
    • Funciona por padrão com a maioria dos sistemas operacionais, mas apenas com o DHCP (o gateway não conhece nomes de host de hosts com IP estático) e geralmente tende a ser bastante esquisito na minha experiência.
    • Programas:
      • Um cliente DHCP regular nos hosts. É necessário enviar a opção de nome do host.
      • dnsmasqno gateway. (Configurações maiores podem usar dhcpd+ named.)

Métodos envolvendo configuração manual:

  • DNS usando seu próprio nome de domínio
    • Funciona em qualquer lugar. ( Porém, não o ajudará a conectar - se realmente pela Internet.)
    • DNS dinâmico possível se você usar o DHCP e controlar um servidor DNS; caso contrário, todos os dados serão estáticos.
    • Precisa possuir um nome de domínio (que custará alguns dólares).
  • subdomínios DNS gratuitos
    • Ainda DNS, apenas gratuito (ou muito mais barato que um domínio), mas também bastante limitado. Serviços como FreeDNS e Dyn oferecem registro de subdomínios individuais em um domínio que eles controlam (por exemplo myhost.dyndns.com).
      • Com muita frequência, o subdomínio já foi escolhido por outra pessoa ...
    • Atualizações dinâmicas de DNS geralmente são permitidas (estilo DynDNS).
  • /etc/hosts
    • Um arquivo de texto que lista os pares de endereço IP - nome do host, que devem ser configurados manualmente em cada máquina cliente.
    • ( %SystemRoot%\system32\drivers\etc\hostsno Windows)
  • Configuração SSH
    • O campo "Hostname" no PuTTY ou ~/.ssh/configno OpenSSH.
    • Deve ser configurado manualmente.
  • Notas PostIt em toda a sua mesa
    • Muito barato. Nenhuma política de nomenclatura. Tipos de dados infinitos.
    • Bastante não confiável. Deve ser distribuído manualmente. Nenhum TTL, que geralmente resulta em informações obsoletas sendo armazenadas em cache por meses até que alguém perceba. Os algoritmos de consulta são ineficientes. As respostas às consultas tendem a se perder facilmente, às vezes deixando apenas um registro de cola no monitor. (Três meses depois, você pode encontrá-los em buffer atrás de sua mesa.)
user1686
fonte
7
Haha, eu gosto da opção de notas PostIt :)
Ryall
11
+1 para mDNS / Avahi. O Avahi é instalado por padrão em muitas distros, mas pode ser uma instalação de pacote para a sua.
Broam 20/09/10
11
No Debian, você terá que instalar o Avahi manualmente.
Martin Ueding
2
Boa resposta. Uma coisa a melhorar: lembre-se de que o DNS / DHCP local funciona perfeitamente sem um domínio registrado. Basta jogar um PI Raspberry embaixo da sua mesa e configurar um pequeno servidor com, por exemplo, dnsmasq.
paradoxon
11
@paradoxon: Obrigado, esqueci de mencionar isso. (A maioria dos gateways domésticos que já executado dnsmasq ou algo semelhante, mas crappier.)
user1686
4

Duas opções.

  • Todos os serviços:

Coloque uma entrada para ele /etc/hosts. Não toque nas linhas existentes, adicione uma nova.

  • apenas ssh:

Adicione uma Hostestrofe a ~/.ssh/configcom o nome que você deseja usar e adicione as opções desejadas abaixo. Veja man 5 ssh_configpara mais detalhes.

Host myserver
    Hostname 192.168.123.234
    Protocol 2
Ignacio Vazquez-Abrams
fonte
4

Se você deseja acessar a caixa Linux a partir de um computador arbitrário, precisará de um nome de domínio. Use um serviço DNS dinâmico para apontar um nome de domínio para o seu computador Linux (ou o roteador ao qual está conectado). Depois de configurar isso, você terá o benefício adicional de não ter que se preocupar com a mudança do IP do seu computador Linux.

M456
fonte
11
Apenas para esclarecer, o endereço IP do computador ainda pode mudar (dependendo de como o ISP gerencia essas coisas), mas você não precisa se preocupar com isso, pois o serviço DNS dinâmico fornece um nome de domínio que sempre mapeia para qualquer que seja o atual O endereço IP do computador é.
David Z
4

No Windows 7 (por sua edição) ...

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

Quando o bloco de notas for iniciado, vá para a parte inferior do arquivo e adicione seu endereço IP e nome do host:

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

Salve o arquivo e tente fazer o ping em um prompt de comando:

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

Isso funcionará apenas na sua LAN. Conectar-se a ele do "mundo" (por seu comentário adicionado) é uma fera totalmente diferente envolvendo um DNS (dyndns, godaddy etc.) e configuração de roteador como tradução de endereço de rede (NAT) et al.

Matt
fonte
2

Você vai querer investigar o Samba ou o Winbind. Minha rede totalmente Linux (incluindo o roteador) pode se comunicar pelo nome do host, mas não sei como informar ao Windows qual é o nome de uma máquina Linux.

Broam
fonte
11
Minha rede faz isso por causa do Avahi (rede Zeroconf). Não conheço a viabilidade de um cliente / servidor Zeroconf no Windows.
Broam 20/09/10
1

Também estou usando o Ubuntu 10.04 e posso conectar-me às minhas máquinas usando o nome delas. Digamos que tenho computadores chamados ernie e bert que estão na mesma rede:

Meu prompt fica assim em ernie:

ernie:~$ 

Se eu digitar isso:

ernie:~$ ssh [email protected]

Eu serei root no bert:

bert:~#

Eu faço isso entre duas máquinas ubuntu, mas acho que funcionaria também em massa. (Não sei como conectar-me ao Windows no Ubuntu, veja outras respostas sobre o samba.)

Você precisa instalar o sshd no Ubuntu para que isso funcione: sudo apt-get install openssh-server

idbrii
fonte
11
Isso ocorre por causa do Avahi, um daemon Zeroconf instalado por padrão. Ele não vai ajudá-lo no Windows, a menos que tenha um cliente devido a algum outro motivo (talvez iTunes instala um que eu não posso dizer?.)
Broam