Quem me conhece sabe que eu não poderia passar em fazer um pequeno trocadilho com o Mosh do metal né ? Mas, não é de heavy metal que iremos falar aqui, e, sim de um app muito legal para quando estamos usando conexões SSH em meios não muito estáveis, como, por exemplo, uma conexão móvel.
Conheci o MOSH usando o MetaArray da SDF e após testar vi que ele era um opção ótima para conexões ssh ( já que lá ficamos em um chat chamado commode por muito tempo).
Mas … quem é o tal MOSH ?
Em bom mineirês, o MOSH é um trem de louco. E ele é interessante porque pode ser entendido, como eu disse um shell para ser usado em roaming, ou seja, mesmo que vocẽ mude o IP, sua seção continuará conectada.
Ele em termos de conexão é semelhante ao SSH ( mas no fundo ainda o utiliza no fundo ) já que ele estabelece a conexão utilizando o pimeiro. Ou seja, inicialmente estabelece a conexão remota através de SSH e usa as mesmas credenciais, executa o programa auxiliar que é o mosh-server não-privilegiado no servidor finalmente fecha a conexão SSH e inicia o mosh-cliente.
O Mosh é um software livre, disponível para Linux, BSD, macOS, Solaris, Android, Chrome e iOS.
Aliás, no Android a maioria dos clientes de SSH que temos disponíveis suporta o uso do MOSH.
E como instalo esta criança ?
Como ele é suportado em basicamente todos os ambientes hoje em dia, é só usar o yum, dnf ou apt para instalá-lo.
dnf install mosh
apt install mosh
E como uso ?
O uso do mosh é algo muito fácil. Simplesmente você tem que fazer um comando como no ssh :
mosh usuario@servidor
E como já dito ele irá tentar uma conexão com o servidor remoto ativando o mosh e após isto, a conexão UDP será ativada, com um servidor MOSH aberto após este processo ( já falei acima ).
Uma função muito legal que o MOSH tem é a predição do que vai ser digitado. Pode ser interessante em um celular mas nem sempre tão legal quando estamos em um computador. Então, eu, pelo menos em alguns momentos gosto muito de desabilitar esta função quando estou conectando.
mosh –predict=never usuario@servidor
Ou
mosh -n usuario@servidor
Para sair do MOSH você pode usar o CTRL+D ou exit ou logout .
Caso queira suspender o CTRL+Z. Ele irá ficar no status stopped e aí, vocẽ poderá voltá-lo ao primeiro plano usando o comando fg .
Eu pessoalmente não gosto muito de fazer isto, até porque mesmo estando na documentação até hoje nunca consegui fazer este trem funcionar corretamente, ou seja, mandar para segundo plano.
E se eu estou rodando o MOSH em uma porta diferente ?
Acontece muito quando não queremos rodar tudo na porta 22, que é uma porta muito visada. Portanto, caso você esteja em um port forward/NAT é só usar a porta configurada. No caso aqui iremos usar a porta 1818 .
mosh –ssh=“ssh -p 1818” usuario@servidor
E o servidor ? Como configuro ?
O MOSH abre suas conexões em portas altas UDP.
Portanto para que ele funcione corretamente vocẽ precisa instalá-lo ( ou seja, com os comandos acima) e depois liberar as seguintes portas no seu firewall :
iptables -I INPUT 1 -p udp –dport 60000:61000 -j ACCEPT
Ou seja, você precisa liberar o range das portas UDP de 60000 até 61000.
Caso seja uma VPS ou servidor que poucas pessoas irão conectar, libere umas 20 portas :
iptables -I INPUT 1 -p udp –dport 60000:60020 -j ACCEPT
E, caso não seja uma VPS mas sim um servidor abaixo de um NAT ou redirecioonamento de portas redirecione as portas acima no protocolo UDP.
E feito isto, está tudo ok … você já tem o MOSH funcionando.