Se você precisar que o serviço funcione enquanto estiver conectado, faça com que ele se conecte ao ssh-agent que você iniciou na sua sessão. A maneira mais fácil de fazer isso é usar um caminho fixo para o soquete do agente. Defina a variável de ambiente SSH_AUTH_SOCK como algo como /home/romeovs/.ssh/darkstar.agent.socket no trabalho systemd e no seu .profile . Observe que, se sua distribuição iniciar um processo ssh-agent para você, talvez seja necessário eliminá-lo ou deixá-lo sem uso e substituí-lo pelo seu. Se a variável SSH_AUTH_SOCK estiver presente no ambiente, ssh-agent usará o caminho que contém para seu soquete. Então, quando você fizer login, execute ssh-add em sua chave privada e o trabalho poderá usá-lo.
Se você precisar que o trabalho funcione o tempo todo, recomendo criar uma chave específica sem senha para esse fim ( ssh-keygen -t rsa -f ~/.ssh/smd.id_rsa -N '' ) e autorizá-lo apenas para executar um comando específico no servidor usando command= e from= de restrições no arquivo ~/.ssh/authorized_keys no servidor. A opção from= significa que a chave é válida apenas para tentativas de login de hosts específicos e command= especifica um comando que é executado em vez do comando especificado pelo cliente.
ssh-rsa AAAA…== romeovs@darkstar no-agent-forwarding no-port-forwarding no-x11-forwarding from="[email protected]" command="somecommand --foo"
O comando é executado pelo seu shell de login. Se você precisar passar parâmetros para esse comando, você tem duas opções:
- O comando original tentado pelo cliente está na variável de ambiente
SSH_ORIGINAL_COMMAND . Cuidado ao citar problemas se você tentar analisá-lo.
- Algumas variáveis de ambiente são passadas pelo cliente. O conjunto exato depende da configuração do servidor (
AcceptEnv diretiva no arquivo sshd_config ).