Est-il possible de changer le chemin SSH_AUTH_SOCK?

0

Je voudrais avoir le ssh-agentsocket dans mon répertoire personnel, mais actuellement, il est créé à l'intérieur /private/tmp.

Je vois que l’agent est géré launchctlet le plist:, /System/Library/LaunchAgents/org.openbsd.ssh-agent.plistmais je ne sais pas comment modifier ce fichier pour avoir le socket, par exemple, à ~/.ssh-agent.sock.

GaretJax
la source

Réponses:

1

J'ai fini avec le plist suivant:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>org.openbsd.ssh-agent</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/bin/ssh-agent</string>
        <string>-l</string>
    </array>
    <key>Sockets</key>
    <dict>
        <key>Listeners</key>
        <dict>
            <!--
                 <key>SecureSocketWithKey</key>
                 <string>SSH_AUTH_SOCK</string>
            -->
            <key>SockPathName</key>
            <string>/Users/myusername/.ssh-agent.sock</string>
            <key>SockPathMode</key>
            <integer>384</integer> <!-- 0600b8 in decimal -->
            <key>SockPathGroup</key>
            <integer>0</integer>
        </dict>
    </dict>
    <key>EnvironmentVariables</key>
    <dict>
        <key>SSH_AUTH_SOCK</key>
        <string>/Users/myusername/.ssh-agent.sock</string>
    </dict>
    <key>EnableTransactions</key>
    <true/>
</dict>
</plist>

Le seul inconvénient est la nécessité d'un nom d'utilisateur codé en dur. Si quelqu'un sait comment résoudre ce problème aussi ...

Je viens d'écraser le fichier par défaut à /System/Library/LaunchAgents/org.openbsd.ssh-agent.plist, puis j'ai exécuté les commandes suivantes:

launchctl unload /System/Library/LaunchAgents/org.openbsd.ssh-agent.plist
launchctl load /System/Library/LaunchAgents/org.openbsd.ssh-agent.plist
launchctl start org.openbsd.ssh-agent
GaretJax
la source
comment avez-vous modifié / System / Library / LaunchAgents/org.openbsd.ssh-agent.plist? le mien est verrouillé (même pour root), sur le dernier el-capitan.
Max Lobur
0

Je me retrouve avec un script .bashrc:

# Predictable SSH authentication socket location.
SOCK="$HOME/.ssh/agent_sock"
AGENT_ENV="$HOME/.ssh/agent_env"
if ! ps -x | fgrep -v fgrep | fgrep -q $SOCK;
then
    rm -f $SOCK
    ssh-agent -a $SOCK > $AGENT_ENV
fi
eval $(cat $AGENT_ENV)

Et cela ressemble à cela ne fonctionnera pas pour l'interface graphique aussi. La mise à jour de la pliste est trop pénible sur El Capitan (redémarrage vers récupération et désactivation SIP -> redémarrage -> modification du pliste et test -> redémarrage vers récupération et activation SIP -> réinitialisation), donc pour ceux qui sont d'accord pour que cela soit résolu pour le shell uniquement - Ceci est une solution de travail.

Max Lobur
la source
0

Vous pouvez le faire fondamentalement de deux manières sans modifier les fichiers Plist:

  1. Si vous utilisez toujours bash dans le terminal et que vous souhaitez l'activer, définissez le chemin d'accès global à votre socket /etc/bashrcpour tous les utilisateurs:

    export SSH_AUTH_SOCK=${HOME}/.ssh-agent.sock
  2. Définissez la SSH_AUTH_SOCKvariable dans le .bashrcscript de l'utilisateur . Même façon que dans non. 1.

Ainsi, chaque fois qu'un utilisateur se connecte à l'aide de la ligne de commande et que bash est exécuté, son socket AUTH est toujours défini dans le répertoire de base. Vous devrez peut-être le faire pour d'autres shells de la même manière ET vous devez toujours vous assurer que le répertoire de l'agent existe. Bien sûr, je ne peux pas garantir que cela fonctionnera aussi avec les clients GUI, également appelés CyberDuck.

Garex
la source
Le problème ne concerne pas la configuration de mon environnement, mais plutôt le démarrage de ssh-agent avec le chemin correct.
GaretJax
OK j'ai compris. Vous souhaitez utiliser les procédures système sans mettre en œuvre les vôtres. Parce que la dernière chose que je vous aurais dite était "ssh-agent -a <SOCKPATH>". Cela a fonctionné pour moi lors du test sur la ligne de commande avec iTerm2.
Garex
Exactement. L'inconvénient est que, comme vous l'avez déjà souligné, cela ne fonctionnera que pour cette session iTerm2 et non pour les autres applications à interface graphique.
GaretJax