SSH para computadores domésticos

21

Tenho várias máquinas em casa que gostaria de acessar da escola usando SSH e VNC. Para fazer isso, 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, para que eu possa encaminhar essa porta para 192.168.1.51:22 no meu roteador, mas dessa forma não poderei fazer o SSH no meu Raspberry Pi. Existe alguma maneira de configurar isso para poder acessar as duas máquinas?

acourchesne
fonte
10
Você pode usar diferentes portas ssh. Não sei o quão difícil é no Windows, mas no linux é muito fácil alterá-lo para uma porta não padrão . Dessa forma, você pode encaminhar a porta 22 para ganhar a máquina (não há alterações lá) e a outra porta (não padrão) para o RaspberryPi.
bistoco
2
@ Melebius, é antigo, mas ainda é uma boa leitura, a parte principal para mim é "O argumento básico que tentei fazer: não faça segurança através da obscuridade.", Trata-se de uma necessidade e resolvê-la facilmente . Dito isto, talvez ele não precise alterar as portas ubuntu ou pi, basta encaminhar portas de roteador diferentes para cada porta de 22 máquinas.
bistoco
1
@bistoco Concordo. No entanto, o OP está prestes a expor o acesso SSH ao mundo externo e a segurança deve ser sempre considerada nesse caso. A configuração de portas diferentes nos computadores também não resolve o problema do OP, pois ele precisa habilitar portas diferentes (= encaminhamento de porta) em seu roteador.
Melebius 20/09/16
6
@ Melebius Fora do tópico, mas nunca uso 22, apenas porque os bots automáticos não batem no meu servidor 24 horas por dia, 7 dias por semana. Ele não mantém um invasor real (ou um script bem escrito) fora, mas reduz o número de minhas entradas de log.
Kaz Wolfe
4
Você pode simplesmente conectar-se a um deles (aquele que é acessível ao público) e depois conectar-se a esse usando o endereço local para os outros.
tkausl

Respostas:

32

Se você possui IPv6, nem precisa de encaminhamento de porta! Simplesmente obtenha seu endereço IPv6 permanente (com base no seu endereço MAC, para garantir que ele permaneça o mesmo, a menos que seu ISP não saiba como o IPv6 funciona) e use-o para conectar-se. Como seu endereço IPv6 é voltado para o público e permite ao mundo para acessá-lo sem precisar passar pelo NAT local, você não precisa se preocupar em ativar o encaminhamento de porta em qualquer lugar. Isso "apenas funcionará".

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

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

insira a descrição da imagem aqui

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

Por fim, se o seu roteador não tiver esse recurso, você poderá alterar a porta, pois o SSH não se limita apenas à execução na porta 22. Você pode configurá-lo para o que quiser (que não está sendo usado).

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

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

Mude isso para o que quiser:

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

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


No entanto, para este caso de uso, eu 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 toda a sua rede doméstica 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 precisará encaminhar apenas uma porta para uma máquina.

Kaz Wolfe
fonte
2
Você pode usar um broker de encapsulamento IPv6 para obter endereços IPv6 se o seu ISP não suportar IPv6.
André Borie
1
Por "esse recurso", você quer dizer encaminhar uma porta para uma porta diferente?
Liu Siyuan
@LiuSiyuan Yep. Eu sei que é estranho, mas vi alguns roteadores que não conseguem lidar com isso. Meu antigo roteador fornecido pelo ISP não conseguiu nem tentar.
Kaz Wolfe
Não entendi bem essa parte do IPv6. Vamos supor que todos os ISPs que fornecem endereços IPv6 oferecem um diferente (consistente) para cada dispositivo na rede?
Jjmontes
1
@jjmontes Se o seu ISP é competente, você vai ter um full / 64 (ou talvez menos, mas ainda suficiente para uma Atribuir para cada máquina)
Kaz Wolfe
19

Uma maneira fácil de resolver esse problema é mapear portas diferentes do seu roteador para a porta 22 de suas máquinas. Por exemplo, você pode ter as seguintes configurações no 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 deseja usar digitando

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

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

Liu Siyuan
fonte
11

Se você sabe que um de seu computador está sempre ativo, 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 o seu endereço IP externo (por exemplo, myhome.dyndns.com ou o que for), o que você fará é conectar-se em um computador (digamos que o framboesa esteja sempre ativo e você encaminhar a porta do roteador para o ), suas conexões ssh serão:

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

agora, em 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 conectar-se 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 se conectará primeiro ao raspberry e, em seguida, iniciará uma sessão ssh no computador ubuntu.

Eu recomendo que, seja qual for a porta que você escolher encaminhar, desabilite a senha no /etc/sshd.conf para permitir apenas o login através da chave ssh. Dessa forma, se você configurar a chave no framboesa e no ubuntu, com o parâmetro 'ForwardAgent', precisará desbloquear a chave e não será necessária nenhuma senha para conectar-se. Dessa forma, mesmo que os robôs estejam tentando fazer login no seu ssh, eles nunca poderão fazer login, pois você não permite o logon da senha.

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, essa configuração não exige nenhuma alteração em casa, se amanhã você e outro computador, apenas copiar / colar o código na sua configuração ssh, alterar o host e o ip, é isso, não é necessário abrir uma nova porta no roteador

potens
fonte
Existe alguma desvantagem em usar uma máquina como intermediário para SSH? Digamos que eu use o meu Raspberry Pi para conectar-me a outros computadores dentro da rede. Seu desempenho afetará a tarefa?
Acourchesne
1
Sim, o raspberry pode limitar a taxa de transferência, pois deve servir como servidor e cliente. Se você estiver confiante o suficiente, poderá obter o mesmo resultado com túneis ssh. Dessa forma, o raspberry age apenas como um servidor, mas o computador da escola deve atender a dois clientes.
potens
4

Faço isso - deixo o rpi ativado e conectado diretamente ao roteador o tempo todo (já que é o mais barato de executar) e apenas ssh nele, depois pulo para os outros - ele nunca precisa de muita atenção.

Também é possível VNC / RDP uma GUI através de um pipe ssh, meio divertido ou encaminhar uma porta que permite navegar para um servidor no seu computador desktop, mantendo-o privado.

A razão pela qual eu adicionei esta resposta foi dar algumas sugestões.

1) Use uma porta diferente de 22. Você pode deixá-la 22 no PI, mas altere a porta de entrada do roteador para algo acima de 10.000 ... Caso contrário, você receberá dezenas a centenas de ataques por dia - e uma vez que você é conhecido por estar executando um host SSH no segundo em que uma exploração é encontrada, você pertence.

2) Use certificados em vez de nome de usuário / senha - desative completamente o login de nome de 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 noip, é grátis e eles oferecem suporte a um cliente Linux para atualizar seu endereço IP - acho que você pode apenas obtê-lo) o pi agora). Ainda existem algumas outras empresas que oferecem isso de graça.

4) Mantenha seu pi (ou o que você quiser) atualizado (sudo apt-get update). Eu acredito que o ssh está muito bem avaliado até agora, mas eu também acreditava que o https ...

Bill K
fonte
3

Estava duvidando se isso se encaixaria melhor como um comentário do que como uma resposta, mas eu o postarei aqui de qualquer maneira.

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

  1. Você abrirá seus sistemas para a Internet, para garantir que eles estejam bem corrigidos e sua configuração de segurança seja reforçada (por exemplo, não permita o login root e use pubkeys em vez de senhas).
  2. Seu IP público (consulte whatismyip.com) pode mudar, dependendo do seu ISP, 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 da sua rede doméstica diariamente, criar algum aplicativo ou usar o DNS Dinâmico (DynDNS) para mapear sua alteração de IP público para um nome de domínio estático.
  3. Se você deseja usar o IPv6 para contornar todos os problemas relacionados ao IPv4 e NAT, precisará de seus dispositivos, roteador, ISP, ... para falar sobre IPv6 também. Existem alguns serviços que podem ajudá-lo quando o seu ISP não oferece suporte ao IPv6, mas seus dispositivos e roteador precisarão conversar de qualquer maneira.
  4. Quanto mais portas e dispositivos você abrir na Internet, maior será a sua área de ataque. Eu sugeriria usar uma caixa de salto na sua rede e permitir apenas o acesso SSH a esse dispositivo pela Internet. O jump-box seria basicamente um sistema muito reforçado que você encaminha através do roteador para a Internet. Uma vez conectado a essa caixa, você poderá fazer o SSH para sua rede interna através dela. A caixa de salto poderia ser basicamente outro Raspberry Pi. Eu sugeriria o uso de um dispositivo dedicado, para poder fortalecê-lo o máximo possível (entre outros, executando o menor número possível de serviços).
  5. (4a) Em vez de ter uma caixa de salto na qual você faz o SSH, você também pode configurar um servidor VPN que permita navegar na sua rede doméstica a partir do seu dispositivo na escola (se conexões VPN de saída forem permitidas).
BlueCacti
fonte