Dois computadores:
Eu preciso do acesso SSH do Desktop-Ubuntu para o RPi. Porque não é possível diretamente eu construí um túnel. Depois de tudo classificar ou tentar fazê-lo funcionar de forma persistente ( autossh
, por exemplo), este é o meu esquema:
Na RPi :
sshd_config
:
ClientAliveInterval 120
ClientAliveCountMax 720
Crontab a cada 5 minutos para verificar se ssh
ID do processo não é nulo.
screen
é usado para manter ssh
output como uma janela de shell separada.
*/5 * * * * /bin/sh /path-to/check-ssh-tunnel.sh
check-ssh-tunnel.sh
:
COMMAND="/usr/bin/screen -dmS ssh-Ubuntu /usr/bin/ssh -R 2255:localhost:22 [email protected] -g"
COMMAND_SSH="/usr/bin/ssh -R 2255:localhost:22 domain-Desktop-Ubuntu.com -g"
PID=$(/usr/bin/pgrep -f -x "$COMMAND_SSH")
if [ "$PID" = "" ]
then
$COMMAND
fi
Aqui está o ps aux | grep ssh
que eu recebo 3 horas após a reinicialização:
pi 2128 0.0 0.2 5396 2252 ? Ss 08:25 0:00 /usr/bin/SCREEN -dmS ssh-Desktop-Ubuntu /usr/bin/ssh -R 2255:localhost:22 [email protected] -g
pi 2130 0.0 0.5 9132 4748 pts/0 Ss+ **08:25** 0:00 /usr/bin/ssh -R 2255:localhost:22 [email protected] -g
Se eu kill 2128
cron funcionar e:
pi 4755 0.0 0.2 5396 2092 ? Ss 11:25 0:00 /usr/bin/SCREEN -dmS ssh-Desktop-Ubuntu /usr/bin/ssh -R 2255:localhost:22 [email protected] -g
pi 4756 0.0 0.5 9132 4840 pts/0 Ss+ **11:25** 0:00 /usr/bin/ssh -R 2255:localhost:22 [email protected] -g
Para acessar o RPi do Desktop-Ubuntu :
ssh -p 2255 pi@localhost
Meu problema é que essa conexão age aleatoriamente:
ssh: connect to host localhost port 2255: Connection refused
ssh_exchange_identification: read: Connection reset by peer
Depois de tentar novamente: Connection refused
. De volta ao RPi nada parece ser alterado:
$ screen -r # to get the ssh window
[email protected]~$ ssh -p 2255 pi@localhost
ssh: connect to host localhost port 2255: Connection refused
Neste momento e para todos os testes, estou gerenciando o RPi remotamente usando o Teamviewer. Por alguns motivos, não quero usá-lo no futuro, a menos que seja absolutamente necessário. É por isso que preciso de um túnel SSH.
O que está errado? Como fazer o túnel funcionar de forma confiável?
Tags ssh-tunnel