J'ai parcouru tous ces forums et soit je n'ai pas trouvé de réponse à cette question, soit plus souvent, la question est différente.
Le client est OS X El Capitan. Je suis connecté et ma clé ssh ( avec phrase secrète ) est correctement stocké dans le trousseau. Tout fonctionne bien manuellement: je peux ssh sur mon serveur, où j'ai précédemment enregistré ma clé publique, sans que le mot de passe composé ne soit demandé. OS X le charge dans ssh-agent lors de la connexion.
Mais bien sûr, mon script ssh sur mon serveur ne fonctionne pas dans le compte à rebours de mon compte, car l'environnement ne dispose pas de la variable SSH_AUTH_SOCK. On me demande la phrase secrète.
Je peux le faire fonctionner sans surveillance comme ceci:
my $sock = `ls /private/tmp/com.apple.launchd.*/Listeners`; chomp($sock);
system("SSH_AUTH_SOCK=$sock /usr/bin/ssh myhost mycommand") && die "blah: $!";
Mais cela semble être un coup dur. Le trousseau est difficile d'accès, mais a le potentiel d'être vraiment gentil. Je ne peux pas imaginer qu'il n'y a AUCUN moyen propre d'y accéder.
cron
sous différents utilisateurs, il ne devrait pas pouvoir fonctionner avec votre trousseau d’utilisateurs. Si vous exécutez lecron
sous le même utilisateur, la solution ci-dessus est tout à fait valide.ssh-agent
Le concept est basé sur la portée de la session et la connexion est donc stockée dans une variable d’environnement. Il n’ya pas d’autre moyen d’obtenir cette connexion que de se procurer la variable d’environnement ou le socket.