
Daemon de conexão SSH para Debian/Raspbian/Ubuntu/etc
sidedoor mantém uma conexão ou túnel SSH com um daemon de script shell.
O caso de uso principal é manter um encaminhamento de porta remota para o servidor SSH local (ou outra porta). Assim, o dispositivo local pode ser acessado sem usar conexões de entrada que podem ser bloqueadas por um NAT ou firewall, ou que, de outra forma, são impraticáveis com dispositivos móveis.
Os clientes SSH podem conectar-se ao dispositivo através do proxy SSH reverso para o qual o sidedoor faz o túnel. Este servidor proxy pode ser não confiável e executado por um terceiro ou serviço em nuvem.
O sidedoor ativa keepalives SSH e tenta reconectar o SSH com backoff exponencial. Para reconectar o mais rápido possível, ele redefine o backoff quando uma interface de rede é ativada (ou alterada).
Outros casos de uso:
Você está usando o sidedoor? Relatórios de bugs, pedidos de funcionalidades - por favor, abra uma issue! Pull requests são bem-vindos.
O sidedoor é empacotado para Debian e sistemas baseados em Debian, como Raspbian, Ubuntu e VyOS/EdgeOS, mas deve funcionar em qualquer ambiente POSIX com um cliente SSH (OpenSSH).
Se o sidedoor estiver nos repositórios da sua distribuição (Debian 9+, Ubuntu 17.04+), basta instalá-lo com seu gerenciador de pacotes.
sudo apt install sidedoor
Caso contrário, você pode baixar manualmente os debs da página de Releases.
Para conceder ao usuário sidedoor acesso root completo,
instale o pacote sidedoor-sudo.
O servidor remoto e os encaminhamentos de porta são configurados em /etc/default/sidedoor.
Os arquivos de configuração SSH estão localizados no diretório /etc/sidedoor.
Configure REMOTE_SERVER e OPTIONS em /etc/default/sidedoor.
Para alguns argumentos a serem passados em OPTIONS, veja a postagem no blog
Local and Remote Port Forwarding Explained With Examples
e a página de manual do ssh.
Edite os arquivos de configuração SSH em /etc/sidedoor.
id_rsa: Chave privada SSH para acessar o servidor remoto.
Pode usar ssh-keygen para criar esta chave
(pressione y quando solicitado a sobrescrever o arquivo existente):
sudo ssh-keygen -t rsa -N '' -f /etc/sidedoor/id_rsa
A chave pública correspondente id_rsa.pub precisará ser incluída no
arquivo ~/.ssh/authorized_keys do usuário remoto.
/etc/ssh/sshd_config.
ChallengeResponseAuthentication no e PasswordAuthentication no).ListenAddress ::1 e ListenAddress 127.0.0.1).sshd, por exemplo,
sudo service ssh reload.ssh_client_config_example e inclua-o no
~/.ssh/config de um cliente para acessar facilmente o servidor SSH tunelado
com ssh, scp, rsync, etc.O sidedoor foi concebido como uma solução leve para fazer túnel de portas com o mínimo de dependências, mas existem algumas alternativas com mais funcionalidades.
O Tor fornece anonimato a servidores executados como serviços ocultos, mas também lida com a travessia de NAT.
Vantagens:
Desvantagens:
Tanto no dispositivo quanto nos clientes, instale o Tor.
sudo apt install tor
No dispositivo que está sendo exposto, edite /etc/tor/torrc
para criar um serviço oculto na porta 22.
HiddenServiceDir /var/lib/tor/sshd/
HiddenServicePort 22 127.0.0.1:22
HiddenServiceAuthorizeClient stealth client
Substitua "client" por uma lista separada por vírgulas de nomes de clientes para gerar múltiplos segredos de autorização.
Em seguida, recarregue o Tor e obtenha o nome do host onion e os dados de autorização.
sudo service tor reload
sudo cat /var/lib/tor/sshd/hostname
Nos clientes, edite /etc/tor/torrc
para adicionar o nome do host onion e os dados de autorização vistos no arquivo hostname.
HidServAuth <hostname>.onion <secret>
Em seguida, recarregue o Tor e execute torsocks ssh <hostname>.onion ou defina ProxyCommand
no arquivo ~/.ssh/config.
ProxyCommand torsocks nc <hostname>.onion 22
autossh, tal como o sidedoor,
inicia o ssh e o reinicia conforme necessário.
Algumas diferenças incluem:
O sidedoor é um daemon de script shell minimalista. O autossh é um programa C mais extenso e configurável.
O sidedoor ativa keepalives SSH
(ServerAliveInterval e ServerAliveCountMax),
que estão disponíveis em versões modernas do OpenSSH.
O autossh monitora o ssh enviando dados através
de um loop de encaminhamentos de porta (este recurso antecede os keepalives SSH),
embora possa ser desabilitado com a opção -M 0.
O sidedoor foi concebido para ser executado automaticamente como um serviço, portanto o pacote inclui scripts init/systemd e arquivos de configuração. O autossh não inclui um script init/systemd (bug Debian #698390).
O sidedoor desabilita comandos remotos e alocação de pseudo-tty. Para uso interativo, considere o autossh com keepalives SSH ou Mosh.
O sidedoor sempre tenta reconectar se o ssh sair com um status de saída diferente de zero.
O autossh não tenta reconectar se o ssh sair muito rapidamente na primeira tentativa,
o que pode acontecer quando a conectividade de rede ou a resolução DNS
está quebrada, particularmente em dispositivos móveis.
Tanto o sidedoor quanto o autossh têm lógica de backoff de repetição.
O sidedoor redefine o backoff de repetição quando uma interface de rede é ativada,
para tentar reconectar o mais rápido possível, recebendo SIGUSR1
de um script if-up.d. O autossh não tem hooks de estado de rede.
Copyright 2015-2017 Dara Adib.
Este programa é software livre: você pode redistribuí-lo e/ou modificá-lo sob os termos da Licença Pública Geral GNU, conforme publicada pela Free Software Foundation, seja a versão 3 da Licença, ou (a seu critério) qualquer versão posterior.
Este programa é distribuído na esperança de que seja útil, mas SEM QUALQUER GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou ADEQUAÇÃO A UM PROPÓSITO PARTICULAR. Veja a Licença Pública Geral GNU para mais detalhes.
Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este programa. Caso contrário, veja https://www.gnu.org/licenses/.
known_hosts: Chave de host SSH do servidor remoto.
Opcionalmente, conceda acesso remoto ao usuário sidedoor local adicionando
chave(s) pública(s) SSH ao arquivo /etc/sidedoor/authorized_keys.
/etc/sidedoor/authorized_keys é um link simbólico para
~sidedoor/.ssh/authorized_keys.
O pacote sidedoor-sudo, se instalado, fornece acesso root completo
a este usuário.
Reinicie o serviço sidedoor para aplicar as alterações.
sudo service sidedoor restart