Qual é a melhor maneira de fazer o SSH para máquinas na rede local?

61

Eu tenho 2 computadores, um que eu uso e outro para as crianças. Eu quero ser capaz de ssh em seu computador para controlá-lo (gostaria de desligá-lo etc), mas estou curioso para saber o melhor jeito de fazer isso. Nós dois estamos na mesma casa e compartilhamos a mesma conexão com a internet.

Qual seria a melhor forma de fazer isso? Com base na pesquisa, li para instalar o openssh-server no computador remoto, mas fiquei impressionado com o que usar para o nome do host ao tentar conectar-me. Normalmente, para os VPS, é o IP externo, mas, como ambos compartilhamos uma conexão wifi, seria o IP do hardware? Deveríamos estar interagindo diretamente pela LAN ou acessando a Internet?

Dukevin
fonte

Respostas:

58

Corre:

avahi-browse -tl _workstation._tcp

Para obter uma lista das estações de trabalho Ubuntu na rede local, você pode se conectar a elas executando:

ssh <username>@<computer-name>.local
Eric Carvalho
fonte
7
Nota: para avahi-browse, você precisará instalar o avahi-utilspacote (que também atrai avahi-daemon, o serviço que fornece a endereçabilidade local.).
Piskvor
2
@Piskvor Bom ponto. Este pacote já está instalado por padrão no Ubuntu Desktop, mas não conheço outros tipos (kubuntu, lubuntu, etc). Se não estiver instalado, basta executar sudo apt-get install avahi-utils.
Eric Carvalho
então seria necessário configurar um servidor ssh ou, por exemplo, o ubuntu 14.04 roda um por padrão?
tobi
11
O servidor SSto @tobi não está instalado por padrão. Você precisa instalá-lo.
Eric Carvalho
2
a lista parece vazia depois que eu corro avahi. Ambos os computadores estão conectados ao mesmo roteador
José Ospina
15

Você pode usar o endereço IP para ssh no computador da criança. Se você deseja usar o nome do computador, edite seu arquivo / etc / hosts para incluir o nome do computador.

192.168.1.104  dad
192.168.1.105  kids
Ed Manet
fonte
12
Você precisa ressaltar que os IPs precisam ser atribuídos estaticamente aos computadores.
Alaa Ali
3
Você pode ativar o sshnome sem editar o arquivo hosts, nomeando hosts em ~/.ssh/config: howtogeek.com/75007/…
Nathan Long
@NathanLong - Nice tip! embora se possa argumentar que tê-lo no arquivo hosts, é possível acessar qualquer serviço (se isso for desejado).
stefgosselin
9

Antes de executar o ssh, verifique o cliente e o servidor ssh. Se você não possui esses serviços, instale

 sudo apt-get install openssh-client

 sudo apt-get install openssh-server

Se você já fez

 ssh username@ipaddress

 Enter connecting device login password.

Exemplo:

 ssh [email protected]

 [email protected]'s password:********

Se você tiver algum erro como: "Permissão negada, tente novamente."

Por favor, verifique duas vezes o nome de usuário e o ip.

PAC
fonte
8

Eu uso o arquivo ~ / .ssh / config que o ssh analisa automaticamente, aqui está um exemplo:

Host *
ControlMaster auto
ControlPath /tmp/%r@%h:%p

KeepAlive yes 
ServerAliveInterval 60
ServerAliveCountMax 10
ControlPersist 1h

Host server1
        User user1
        HostName server1-web.example.org

Host server2
        User user2
        HostName server2-db.example.org
        Compression yes
        IdentityFile /home/user/.ssh/different_key.pem

Observe que você pode usar qualquer variável (lado do cliente) nesse arquivo e configurá-la globalmente ou por servidor.

Shadok
fonte
Então, como configurar o recurso DNS de um dispositivo de gateway da Internet doméstico para associar server1-web.example.orge server2-db.example.orgaos respectivos servidores?
Damian Yerrick
5
  1. Você pode ssh diretamente para um IP local, desde que sua LAN use IPs estáticos, por exemplo
    ssh [email protected]

  2. Você pode editar o arquivo hosts em ambos os computadores, como mencionado por Ed Manet em sua resposta . Dessa forma, você pode ssh usando o nome do host do computador, ou sejassh someuser@some_hostname

  3. Você pode configurar um servidor DNS local para resolver os hosts da sua LAN. Dessa forma, você poderá usar o ssh usando o nome do host do computador como na opção 2, mas com benefícios adicionais para evitar a edição de todos os arquivos de hosts, apontando o servidor DNS nas configurações de rede do Ubuntu.

DNSMasq é muito bom servidor DNS fácil de configurar.
Outra opção é BIND .

Stef K
fonte
3

Use o endereço IP da LAN local. A abordagem alternativa requer que alguma porta esteja aberta na Internet, para permitir o login.

Além disso, você precisaria de mapeamento de portas (no roteador). O uso do seu endereço IP 'público' (no roteador) como destino não se conectará a nenhum dos seus dois PCs.


A maneira mais simples é atribuir permanentemente cada endereço IP (para seus 2 computadores) no roteador. Em seguida, basta conectar-se a esse endereço IP.

Se você deseja ser inteligente (mais tarde), configure um servidor e comece a usar um serviço DNS local para atribuir nomes significativos a cada dispositivo. Realmente não vale a pena o problema por apenas 2 PCs.

david6
fonte
11
Nota: muitos roteadores domésticos decentes hoje em dia lerão os nomes de host das estações de trabalho durante a atribuição de endereço IP e o resolverão para o DNS local. Infelizmente, este ainda não é um recurso universal.
Piskvor
2

Se você estiver compartilhando a mesma conexão com a Internet, provavelmente estará atrás do mesmo roteador wifi. Então você se conecta diretamente ao computador de seus filhos:

ssh <IP-address>

ou:

ssh <user-name>@<IP-address>

Obviamente, isso funciona melhor se o computador infantil tiver um endereço IP estático. Caso contrário, você sempre precisará verificar qual é o IP. A maioria dos roteadores tem a opção de atribuir IP estático (sempre o mesmo) aos dispositivos escolhidos. Alguns roteadores também têm a opção de atribuir o nome do host a determinado dispositivo - então, para qualquer dispositivo no mesmo endereço de rede, "filhos" significaria o mesmo. Se você atribuir nomes de host com o arquivo / etc / hosts, o nome do host será conhecido apenas no computador em que esse arquivo estiver. Também pressupõe que o computador infantil tenha um endereço IP estático.

Você pode definir o IP estático para o computador infantil também nessa máquina, mas aconselho a configuração onde as configurações de rede são feitas no roteador. Um ponto de controle - mais fácil de gerenciar. Se algo não estiver claro, deixe um comentário e eu expandirei minha resposta.

Tanel Mae
fonte
Eu tentei sua sugestão, mas ssh: connect to host xxx.xxx.x.xx port 22: connection refusedocorreu um erro: - há alguma configuração adicional necessária?
Lukaszkups 22/03
É necessário que o servidor ssh esteja em execução nessa máquina e nenhum firewall a bloqueie e assim por diante. Pode ser que o ssh tenha sido configurado para esperar conexões em alguma outra porta; nesse caso, é possível que o sinalizador -p use outra coisa que não a porta padrão (22).
Tanel Mae
0

Você pode usar o endereço IP no lugar de um nome de host ou atribuir um nome de host personalizado em seu /etc/hostsarquivo.

Para obter o IP no computador da criança: no menu de rede, consulte "Informações da conexão" ou execute ifconfigna linha de comando (elas devem ser feitas no computador da criança).

Seu roteador wifi atribui esses endereços IP e você deve configurá-lo para manter endereços IP específicos para os computadores aos quais eles estão atualmente atribuídos. (Caso contrário, os IPs poderão mudar de tempos em tempos).

AmanicA
fonte
0

Você pode simplesmente atribuir um nome de computação à máquina do seu filho.
Então simplesmente faça,
ssh MachineName

Eu nunca usei isso, apenas um pensamento em minha cabeça que compartilhei.

Gaurav Gandhi
fonte