Como configurar o túnel SSH automático

Como configurar o túnel SSH automático

Tenho usado o recurso de encaminhamento remoto do SSH para encaminhar conexões de um soquete de domínio Unix em um host remoto example.compara um soquete de domínio Unix em minha máquina local. Ambas as máquinas rodam Linux. O comando é o seguinte:

ssh -N -n -R /home/guest/daemon.sock:/var/run/daemon.sock [email protected]

Quero automatizar isso para que o túnel seja criado automaticamente sempre que minha máquina for inicializada. Copiei o arquivo /etc/ssh/ssh_host_rsa_key.pub da minha máquina local para o controle remoto /home/guest/.ssh/id_rsa.pube anexei as seguintes linhas à /etc/ssh/ssh_configminha máquina local:

Host example.com User guest IdentityFile /etc/ssh/ssh_host_rsa_key RemoteForward /home/guest/daemon.sock /var/run/daemon.sock

Por razões de segurança, também quero restringir o usuário 'convidado' na máquina remota à criação de túneis e nada mais. Portanto, anexei as seguintes linhas /etc/ssh/sshd_configno host remoto:

match User guest AllowTcpForwarding yes X11Forwarding no AllowAgentForwarding no ForceCommand /bin/false

Aqui está o problema: nada acontece quando minha máquina local é inicializada. Tenho certeza de que estou perdendo algo importante, mas não consegui encontrar o quê. Alguma ideia?

Responder1

O ssh_configarquivo não faz absolutamente nada para automatizar conexões SSH.

Ela existe apenas para permitir definir oopções padrão– sempre que você executa ssh example.com, a seção "Host" correspondente é consultada e todas as opções adicionadas à linha de comando. (Você poderia dizer que é semelhante aos aliases de shell.) O por usuário ~/.ssh/configé mais comumente usado para a mesma finalidade.

Mas ainda depende de você realmentecorrero sshcomando, por exemplo, através de uma unidade systemd .service, ou um script /etc/init.d, ou um cron job. (Não se esqueça de definir no serviço que ele precisa ser iniciado após a configuração da rede.)

(Vocêpoderiacontinue usando ssh_config, mas é inútil aqui e só faráregularconexões para example.comirritante. Basta especificar as mesmas opções diretamente no arquivo de serviço.)


Embora não seja ilegal, é um tanto estranho reutilizar a chave do host para autenticação do lado do cliente. Seria melhor gerar um par de chaves dedicado usando ssh-keygen.

E como @Paul observou no comentário, as chaves confiáveis ​​​​devem ser listadas authorized_keys– o servidor SSH não se importa com nenhum dos id_*arquivos.

informação relacionada