SSH para computadores domésticos

18

Eu tenho várias máquinas em casa que gostaria de acessar da escola usando SSH e VNC. Para fazer isso, eu dei a eles IPs estáticos:

  • 192.168.1.50: Windows
  • 192.168.1.51: Ubuntu
  • 192.168.1.52: Raspberry Pi / Raspbian

Eu sei que o SSH usa a porta 22, então eu posso encaminhar esta porta para 192.168.1.51:22 no meu roteador, mas dessa forma eu não poderei usar o SSH no meu Raspberry Pi. Existe alguma maneira que eu poderia configurar isso para poder acessar as duas máquinas?

    
por acourchesne 20.09.2016 / 05:02

5 respostas

32

Se você tiver o IPv6, nem precisará de encaminhamento de porta! Basta obter o seu endereço IPv6 permanente (com base no seu endereço MAC, por isso é garantido que permanecerá o mesmo, a menos que o seu ISP não saiba como o IPv6 funciona) e use isso para entrar. Como o seu endereço IPv6 é voltado para o público e permite ao mundo Para acessá-lo sem ter que passar pelo seu NAT local, você não precisa se preocupar em habilitar o encaminhamento de porta para qualquer lugar. "Apenas funcionará".

Note, no entanto, que o IPv6 ainda não é realmente suportado globalmente, e tanto a sua conexão doméstica à Internet quanto a conexão à Internet remota precisam ter IPv6 totalmente funcional para fazer isso.

No entanto, se você é como a maioria das pessoas e tem apenas IPv4, ainda há um caminho! Alguns roteadores permitem que você encaminhe portas de origem específicas para portas de destino específicas, assim:

Neste exemplo, a porta 22 é passada diretamente para minha máquina sheepdog , enquanto a porta 292 está sendo encaminhada para a porta 22 on coyote .

Por fim, se o seu roteador não tiver esse recurso, você poderá simplesmente alterar a porta, pois o SSH não está limitado a apenas executar na porta 22 . Você pode configurá-lo para qualquer coisa que você quiser (isso não está sendo usado).

Em /etc/ssh/sshd_config (você precisa de raiz para editar, então sudo nano /etc/ssh/sshd_config ), há uma linha na parte superior do arquivo:

# What ports, IPs and protocols we listen for
Port 22

Altere isso para o que você quiser:

# What ports, IPs and protocols we listen for
Port 2992

Reinicie o servidor SSH com sudo service ssh restart e encaminhe a porta no roteador.

No entanto, para este caso de uso, consideraria se os túneis SSH são a coisa certa a fazer. Talvez você deva configurar um servidor VPN dedicado em sua rede doméstica? Isso permitirá que você acesse sua rede doméstica inteira de qualquer lugar, desde que você tenha as credenciais de segurança necessárias para a VPN. Além disso, há um pouco menos de sobrecarga com uma VPN; você normalmente só precisa encaminhar uma porta para uma máquina.

    
por Kaz Wolfe 20.09.2016 / 05:18
19

Uma maneira fácil de resolver esse problema é mapear diferentes portas do seu roteador para a porta 22 de suas máquinas. Por exemplo, você pode ter as seguintes configurações em seu roteador (supondo que seu roteador tenha IP 1.2.3.4 )

1. 1.2.3.4:22   --> ubuntu:22
2. 1.2.3.4:8888 --> raspberrypi:22
3. 1.2.3.4:9999 --> windows:22 (or some other port)

Então, quando você usa ssh, especifique a porta que você quer usar digitando

$ ssh <username>@<router ip> -p <your port>

Agora você deve conseguir se conectar a todas as suas máquinas.

    
por Liu Siyuan 20.09.2016 / 08:28
11

Se você sabe que um de seu computador está sempre ativo, você também tem a possibilidade de usá-lo como um proxy ssh.

digamos que você tenha uma configuração de nome de domínio para seu endereço IP externo (ou seja, myhome.dyndns.com ou qualquer outro), o que você fará é conectar em um computador (digamos que o framboesa esteja sempre ativo e seu roteador para ele), as conexões do seu ssh serão:

escola - > (roteador, transparente aqui) - > framboesa - > ubuntu ou windows

agora, no seu ~ / .ssh / config na escola, adicione as linhas:

Host ubuntu 192.168.1.51
    Hostname ubuntu (change to match your setup)
    User myraspberryuser  (change it ;-) )
    IdentityFile ~/.ssh/id_rsa   (The path to your private key, on the school computer, better on an usb key if public computer)
    ForwardAgent yes
    RequestTTY yes
    ProxyCommand ssh -W %h:%p %[email protected]

Para se conectar, então:

ssh-add ~/.ssh/id_rsa # to do only once per session
ssh myuser@ubuntu (login without password)

A partir de agora, se você digitar ssh ubuntu, o computador primeiro se conectará ao framboesa e iniciará uma sessão ssh no computador do Ubuntu.

Eu recomendo que, seja qual for a porta que você escolher para encaminhar, desabilite a senha em /etc/sshd.conf para permitir somente o login através da chave ssh. Desta forma, se você configurar a chave no framboesa e no Ubuntu, com o parâmetro 'ForwardAgent', você terá que apenas desbloquear a chave e, em seguida, nenhuma senha é necessária para se conectar. Dessa forma, mesmo que os bots estejam tentando fazer login no seu ssh, eles nunca conseguirão fazer o login, uma vez que você não permite o logon de senhas.

Bônus, isso também funciona com scp, scp foo ubuntu: / tmp / foo usará a mesma configuração sem parâmetros adicionais. Bônus 2, esta configuração não requer qualquer alteração em casa, se amanhã você e outro computador, basta copiar / colar o código em sua configuração ssh, alterar o host e ip, é isso, não há necessidade de abrir uma nova porta no roteador

    
por potens 20.09.2016 / 16:47
4

Eu faço isso - deixo o rpi ligado e plugado diretamente no roteador o tempo todo (já que é o mais barato de rodar) e apenas ssh nele, depois salto para os outros - ele nunca precisa de muita atenção .

Também é possível usar o VNC / RDP como uma GUI em um pipe ssh, divertido ou encaminhar uma porta que permita navegar até um servidor em seu computador, mantendo-o privado.

O motivo pelo qual adicionei esta resposta é dar algumas sugestões.

1) Use uma porta diferente de 22. Você pode deixar 22 no PI, mas mudar a porta de entrada do seu roteador para algo acima de 10.000 ... Senão você terá dezenas de centenas de ataques por dia - e uma vez que você saiba que está executando um host SSH no segundo em que uma exploração é encontrada, você é o proprietário.

2) Use certificados em vez de nome de usuário / senha - desabilite completamente o login do usuário / senha.

3) Se o seu endereço IP pode mudar, use um serviço do tipo dyndns para obter um hosthame DNS (eu uso o noip, é grátis e eles suportam um cliente Linux para atualizar o seu endereço ip - acho que você pode obtê-lo no pi agora). Ainda existem algumas outras empresas que oferecem isso de graça.

4) Mantenha seu pi (ou qualquer coisa que você esteja usando) atualizado (sudo apt-get update). Eu acredito que o ssh está muito bem avaliado agora, mas eu também acreditei no https ...

    
por Bill K 20.09.2016 / 19:09
3

Estava duvidando se isso se encaixaria melhor como um comentário em vez de uma resposta, mas vou postar aqui mesmo assim.

Algumas coisas que você deve pensar antes de fazer isso:

  1. Você abrirá seus sistemas na Internet, por isso é melhor verificar se eles estão bem corrigidos e se sua configuração de segurança está protegida (por exemplo, não permita login raiz e use pubkeys em vez de senhas).
  2. Seu IP público (veja whatismyip.com) pode mudar, dependendo do seu ISP, ele pode mudar diariamente ou quase nunca. Isso significa que você terá que encontrar uma maneira de descobrir seu IP público. Você pode visitar o whatismyip.com de sua rede doméstica diariamente, criar algum aplicativo ou usar o DNS dinâmico (DynDNS) para mapear seu IP público em mudança para um nome de domínio estático.
  3. Se você quiser usar o IPv6 para ignorar todas as dificuldades relacionadas ao IPv4 e ao NAT, precisará dos seus dispositivos, roteador, ISP, ... para falar também do IPv6. Existem alguns serviços que podem ajudá-lo quando seu ISP não oferece suporte a IPv6, mas seus dispositivos e roteador terão que conversar de qualquer maneira.
  4. Quanto mais portas e dispositivos você abrir na internet, maior será sua área de ataque. Eu sugeriria usar uma caixa de salto na sua rede e permitir apenas o acesso SSH a esse dispositivo da Internet. A caixa de salto seria basicamente um sistema bastante avançado que você encaminha para o seu roteador na Internet. Uma vez conectado a essa caixa, você poderá enviar o SSH para sua rede interna através dele. A caixa de salto poderia ser basicamente outro Raspberry Pi. Eu sugeriria usar um dispositivo dedicado, para poder endurecê-lo o máximo possível (entre outros, executando o menor número de serviços possível).
  5. (4a) Em vez de ter uma caixa de entrada para o SSH, você também pode configurar um servidor VPN que permita navegar em sua rede doméstica a partir do dispositivo na escola (se as conexões VPN de saída forem permitidas).
por BlueCacti 20.09.2016 / 12:25