Como configurar o túnel SSH automático

1

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

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

Eu quero automatizar isso para que o túnel seja criado automaticamente toda vez minha máquina inicializa. Eu copiei o arquivo /etc/ssh/ssh_host_rsa_key.pub da minha máquina local para o /home/guest/.ssh/id_rsa.pub do controle remoto e Anexei as seguintes linhas a /etc/ssh/ssh_config na minha 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 motivos de segurança, também quero restringir o usuário 'convidado' no controle remoto máquina para criação de túneis e nada mais. Eu, portanto, acrescentei o seguintes linhas para /etc/ssh/sshd_config no 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 sentindo falta de algo importante, mas não consegui encontrar o quê. Alguma idéia?

    
por Jon Smark 09.10.2017 / 14:39

1 resposta

2

O arquivo ssh_config não faz absolutamente nada para automatizar as conexões SSH.

Ela existe apenas para permitir a definição das opções padrão - sempre que você executar ssh example.com , a seção "Host" correspondente será consultada e todas as opções serão adicionadas à linha de comando. (Você poderia dizer que é semelhante aos aliases do shell.) O usuário ~/.ssh/config por usuário é mais comumente usado para o mesmo propósito.

Mas ainda é sua responsabilidade executar o comando ssh , por exemplo, por meio de uma unidade de serviço do systemd ou um script /etc/init.d ou uma tarefa cron. (Não se esqueça de definir no serviço que ele precisa para iniciar após a configuração da rede).

(Você pode continuar usando o ssh_config, mas é inútil aqui e só fará conexões regulares com example.com irritantes. Basta especificar as mesmas opções diretamente no serviço em vez disso.)

Embora não seja ilegal, é um pouco estranho reutilizar a chave do host para a 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 estar listadas em authorized_keys - o servidor SSH não se importa com nenhum dos arquivos id_* .

    
por 09.10.2017 / 14:52