
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.com
para 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.pub
e anexei as seguintes linhas à /etc/ssh/ssh_config
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 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_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 perdendo algo importante, mas não consegui encontrar o quê. Alguma ideia?
Responder1
O ssh_config
arquivo 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 ssh
comando, 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.com
irritante. 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.