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
).