Como usar o SSH fora da rede doméstica

15

Recentemente, configurei o SSH no meu Raspberry Pi. Ele está indo muito bem, especialmente desde que eu posso controlar o computador através do meu iPhone com o aplicativo Server Auditor . Infelizmente, isso só funciona através da rede local.

Como posso fazer meu SSH funcionar quando estou fora de casa? (De preferência, funciona com o aplicativo.)

xxmbabanexx
fonte
você pode encaminhar uma porta do seu roteador?
Steve Irwin
1
@SteveIrwin Eu provavelmente posso, mas como não sou especialista em redes, prefiro uma solução fácil, como o Port Map . Na verdade ... se eu compartilhar a Internet do meu Mac com o meu Pi, seria capaz de compartilhar as portas encaminhadas?
Xxmbabanexx
1
configurar um encaminhamento de porta é provavelmente pelo menos tão fácil quanto usar o Mapa da Porta. Você precisa nos dizer mais sobre como sua LAN está configurado
John La Rooy
Sua melhor aposta é instalar o serviço Weaved (www.weaved.com) e concluir com ele. Todos os outros tutoriais que você encontrará na internet o levarão a um caminho frustrante.
IgorGanapolsky
para a postagem que sugere o uso do socketxp, use o seguinte para fazer o download do socketxp no RPI curl -O portal.socketxp.com/download/arm/socketxp && chmod + wx socketxp && sudo mv socketxp / usr / local / bin em vez do linux Arquivo.
jeonghoon 26/10/19

Respostas:

20

Aqui estão os passos que eu usei (no debian) que você pode achar úteis.

1.Configurar o IP estático para o Pi.

a.Abra o arquivo de interfaces usando o comando

sudo nano /etc/network/interfaces

Altere o arquivo de interfaces para o seguinte (Isso funciona para mim, não tenho certeza se algumas das linhas podem ser excluídas).

auto lo
iface lo inet loopback
iface eth0 inet static
address 192.168.1.2  #static ip you want for the pi
netmask 255.255.255.0
gateway 192.168.1.1    # the ip address of the router

c.Verifique se o IP foi alterado usando o comando ifconfig

2.Configurando um DNS dinâmico

Provavelmente, o endereço IP atribuído pelo seu ISP é dinâmico e, portanto, precisamos de uma maneira de resolver as alterações no endereço IP. Eu uso o dnsdynamic e o ddclient para conseguir isso.

a.Inscreva-se para uma conta com dnsdynamic

b.Adicione um novo domínio e selecione um nome e o domínio na lista.Você pode escolher qualquer um dos domínios disponíveis com a sua escolha de subdomínio.Clique em verificar disponibilidade e, em seguida, adicione

captura de tela dnsdynamic

3.Definindo o ddclient no Pi

a.Instale o ddclient usando o comando

sudo apt-get install ddclient

Abra o arquivo de configuração do ddclient usando o seguinte comando e adicione as seguintes linhas.

sudo nano /etc/ddclient.conf

e altere o arquivo para o seguinte.

# /etc/ddclient.conf
daemon=600
timeout=10
ssl=yes
protocol=dyndns2
use=web, web=myip.dnsdynamic.com
server=www.dnsdynamic.org
[email protected]  #userid for dnsdynamic.com
password='xxxx'      #password for the same put inside quotes
x.dnsdynamic.com  #the domain name you created

e salve o arquivo.

d. Desejamos que o serviço ddclient seja iniciado automaticamente nas reinicializações. Faça o seguinte.

sudo nano /etc/rc.local

Adicione o seguinte comando antes da saída 0 (que é a última linha)

sudo /usr/sbin/ddclient -daemon 600 -syslog

Salve o arquivo. Para iniciar o ddclient, reinicie o seu pi ou execute o comando acima no prompt. Ele manterá seu nome de domínio atualizado com o endereço IP atual mudando quando necessário.

4. encaminhamento de porta

Encontre o modelo do seu roteador.

b.Vá para portforward.com

c.Insira a marca e o modelo do roteador para encontrar o guia detalhado sobre a porta de encaminhamento.

Depois de selecionar a marca e o modelo do roteador, clique no guia Padrão na página redirecionada.

Na caixa de texto IP estático , digite o IP estático do Pi fornecido na etapa 1.

Siga as etapas e a porta de encaminhamento 22.A porta de origem precisa ser 22 e a porta de destino pode ser qualquer coisa. porta.

Se você estava seguindo o tutorial, efetue login no pi de qualquer lugar usando a substituição do endereço IP pelo nome de domínio. por exemplo: eu uso [email protected]: 22 para ssh no meu pi.

SteveIrwin
fonte
Muito obrigado! Quando eu voltar de visitar Exeter, vou tentar isso!
Xxmbabanexx
+1 Grande resposta, no entanto, você realmente precisa usar sudoem /etc/rc.local, não é que já em execução como root?
precisa saber é o seguinte
Assim, estraguei totalmente minhas configurações de Ngrok e Weaved. Agora não consigo me conectar!
IgorGanapolsky
2

Primeiro, você deseja configurar o encaminhamento de porta. Cada roteador é um pouco diferente, então você terá que procurar as especificações específicas do seu roteador.
Existem guias de instruções genéricos de encaminhamento de porta que podem funcionar para a maioria dos roteadores, mas eu sugiro que você encontre um guia para o seu modelo de roteador real.

Defina uma porta memorável para vincular ao seu raspberry pi, como 23456 ou algo assim. Cuidado para não sobrescrever números de porta comuns .

Por fim, usando ssh, faça o seguinte:

$ ssh -p 23456 user@IP

Onde:

asfalto
fonte
Por que não consigo usar a porta 22 em vez do 23456 personalizado?
IgorGanapolsky 12/08
1
@IgorGanapolsky, você pode fazer isso, mas 1) se você tiver outro computador ao qual deseja se conectar através do SSH fora de sua casa, haverá um conflito e 2) mais arriscado, pois muitos "hackers" tentam fazer login pela porta 22 , então fechá-lo fora é frequentemente recomendada em servidores
meneldal
2

Acessar o RaspberryPi (ou até laptops / servidores) de fora da rede doméstica (ou seja, da Internet) não é uma tarefa fácil, porque o laptop doméstico ou o RaspberryPi possui apenas um endereço IP local (no intervalo 10.xxx ou 192.168.xx alcance). Não possui um endereço IP público visível na Internet.

A resposta simples para sua pergunta é usar serviços on-line gratuitos, como o SocketXP, que fornece um ponto de extremidade de túnel público seguro para SSH no RaspberryPi de fora da rede doméstica.

O SocketXP fornece uma maneira simples, segura e fácil de acessar o RaspberryPi doméstico a partir da rede externa. O SocketXP não requer que você hackear nenhuma configuração no seu roteador WiFi. Funciona imediatamente. Para saber como configurar o RaspberryPi para SSH de fora, leia este blog sobre como fazer o SSH remoto no RaspberryPi usando o SocketXP.

Como configurar o SocketXP:

Etapa 1 : Instale o cliente SocketXP no seu RaspberryPi usando o seguinte comando.

$ curl -O https://portal.socketxp.com/download/linux/socketxp && chmod +wx socketxp && sudo mv socketxp /usr/local/bin

Etapa 2: Conecte o cliente SocketXP ao SocketXP Cloud Service usando o seguinte comando. Você precisa se registrar em https://portal.socketxp.com para obter seu token de autenticação exclusivo.

$ socketxp -register "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NDk1MTg0MDAsImlkIjoiZ2FuZXNodmVscmFqYW5AZ21ha6K208n0.cB2uYevpH4lWIQGQUJdQ0eiEDqS8OiP_YOiqernnui3rjjadfadsfsfas34"

Etapa 3 : obtenha um ponto de extremidade de túnel público para acessar seu RaspberryPi pela Internet.

$ socketxp -connect tcp://localhost:22

Tunnel Access -> tunnel.socketxp.com:35277

Passo 4 : SSH no seu RaspberryPi da Internet usando o seguinte comando.

$ ssh [email protected] -p 35277

onde "raspberry-username" é o nome de usuário / senha que você usa para fazer o login SSH no seu RaspberryPi.

Ganesh Velrajan
fonte
1

Esta pergunta é antiga, à medida que o tempo passa, há menos chances de você obter um endereço IPv4 acessível ao público. Provavelmente você está atrás de um CGNAT, o que significa que você compartilha um único IPv4 público com outros clientes do ISP. Portanto, não é possível fazer um encaminhamento de porta para seu PI ou qualquer outra coisa.

Se você possui IPv6, pode fornecer ao PI um endereço estático e permitir acesso a ele no seu roteador. Muitas operadoras de telefonia móvel agora oferecem IPv6 para telefones. Os antigos ISPs "terrestres" (fibra, DSL, cabo coaxial etc.) costumam estar se arrastando.

Você também pode obter um VPS (servidor virtual privado) barato com um IPv4 público em algum lugar da nuvem e criar um túnel SSH do PI para o VPS.

Lenne
fonte
0

Além da resposta do phalt, você deve verificar um dos serviços DNS dinâmicos, como No IP . Eles permitem que você acesse sua rede doméstica com um nome de host estático, embora seu endereço IP possa ser alterado diariamente, porque seu DSL ou provedor de cabo o desconectou. Eles também têm uma boa começando página, que também apresenta a você configurar seu roteador de acordo.

Convém instalar o inadynpacote no seu Raspberry Pi para atualizar as entradas DNS sem IP, quando o IP mudar. Você pode fazer isso executando:

sudo apt-get install inadyn

Do README inadyn eu peguei este exemplo de chamada:

inadyn --dyndns_system [email protected] -u USER-p PASS -a HOST

Espero que isto ajude.

Arne
fonte
O No-Ip possui um DUC (cliente de atualização dinâmica), o que garantirá que o seu endereço IP não seja alterado.
IgorGanapolsky
0

Adicional à resposta de steve irwin:

Passo 1:

se você se conectar através da wlan, use:

iface wlan0 inet static
wpa-ssid "xxx" #<=your ssid
wpa-psk "yyy"  #<=your pw
address 192.168.1.xxx #<=preferred static ip (xxx<255)
netmask 255.255.255.0
gateway 192.168.1.1 #<=router's ip

Passo 2:

depois de alterar o acima, você precisa reiniciar networking:

sudo /etc/init.d/networking restart
David Bielen
fonte
Também adicionei duas linhas na frente do bloco estático: auto wlan0 allow-hotplug wlan0 Encontrei-o neste post raspberrypi.stackexchange.com/a/10320/10148 Também tentei fazê-lo sem eles, mas algo não funcionou.
XandruCea
Esta resposta deve ser considerada desatualizada devido a alterações na configuração de rede e no sistema init do Raspbian.
goldilocks
0

Além disso, alguns roteadores possuem suporte interno para alguns serviços DNS dinâmicos; você pode ativar esta opção (se existir) no roteador para evitar a instalação do cliente no PI (e economizar um pouco de sobrecarga enquanto estiver nele).

user17925
fonte
0

Portanto, você tem um servidor ssh (seu Raspberry PI) protegido por um firewall (seu roteador) e deseja conectá-lo de qualquer lugar. Vamos supor que o servidor ssh esteja configurado corretamente, ou seja, executar 'ssh username @ localhost date' no seu Raspberry mostra a data / hora atual.

Você tem que resolver dois problemas:

  • Seu roteador deve encaminhar uma porta fixa para sua porta raspberry ssh (geralmente 22).
  • Você deve conhecer o endereço IP público do seu roteador (que geralmente muda na reconexão do roteador e até uma vez a cada 24h).

Encaminhamento de porta e DynDNS

Existem soluções (como foi apontado por outros):

Se configurado corretamente, é possível conectar seu rasbperry pi com:

ssh username@[yourIP] -p [port] 
# or using dyndns 
ssh [email protected] -p [port]

Usando sshhub.de

Outra solução muito conveniente, não mencionada até agora, é o SSHHub ( disclamer , eu sou o autor). Ele usa o encaminhamento do ssh para acessar seu PI Rasperry de qualquer lugar. É confiável, gratuito e bastante simples de configurar . Registre-se uma vez:

ssh [email protected] register

execute no seu PI de framboesa:

while true; do ssh [username]@sshhub.de -R 22:localhost:22 -N -o ServerAliveInterval=10; sleep 10; done

...e é isso! Você pode conectar seu Raspberry Pi de qualquer lugar:

ssh -J [username]@sshhub.de localhost
Oliver
fonte
Olá e bem-vindo ao Raspberry Pi! Faça o tour e visite o centro de ajuda para ver como as coisas funcionam aqui. Agradecemos sua contribuição, mas lembre-se de que solicitamos que você divulgue sua afiliação em suas respostas . (Presumo que você seja o autor do software recomendado.)
Ghanima
Obrigado por me apontar na direção certa. Eu sou o autor. Eu certamente quero agregar valor com a minha resposta para as pessoas que procuram uma solução. E espero que o meu faça tão bem quanto o sshhub.
Oliver
0

Você pode usar uma VPN para permitir o acesso de entrada ao seu pi. O OpenVPN é uma solução, que exigiria um computador acessível a partir da Internet (uma porta de entrada). No entanto, desde que você tenha um computador acessível, os outros computadores não precisam ser, pois podem ser clientes do servidor OpenVPN.

Outra opção seria usar um serviço como o ZeroTier, que fornece servidores centralizados para criar uma VPN, para que você não precise executar seu próprio servidor. Isso também é gratuito.

Rebroad
fonte
Outra opção muito boa é usar o wireguard .
Ingo