¿Es posible cambiar la ruta SSH_AUTH_SOCK?

0

Me gustaría tener el socket ssh-agent dentro de mi directorio de inicio, pero actualmente se crea dentro de /private/tmp .

Veo que el agente se administra a través de launchctl y este plist: /System/Library/LaunchAgents/org.openbsd.ssh-agent.plist , pero no sé cómo modificar este archivo para tener el socket, por ejemplo, en ~/.ssh-agent.sock .

    
pregunta GaretJax 19.03.2015 - 13:29

3 respuestas

1

Terminé con el siguiente plist:

<?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>

El único inconveniente es la necesidad de un nombre de usuario codificado. Si alguien sabe cómo resolver esto también ...

Acabo de sobrescribir el archivo predeterminado en /System/Library/LaunchAgents/org.openbsd.ssh-agent.plist , luego ejecuté los siguientes comandos:

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
    
respondido por el GaretJax 19.03.2015 - 13:50
0

Terminé con 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)

Y suena como que esto tampoco funciona para GUI. La actualización de plist es demasiado dolorosa en El Capitan (reiniciar y recuperar & SIP deshabilitar - > reboot - > editar plist & probar - > reiniciar para recuperar & habilitar SIP - > reiniciar), por lo que está bien tener esto resuelto solo para shell, esta es una solución que funciona.

    
respondido por el Max Lobur 09.06.2016 - 23:44
0

Podrías hacer esto básicamente de dos formas posibles sin modificar los archivos plist:

  1. Si siempre usa bash en la Terminal y desea habilitar eso, configure la ruta a su socket global en /etc/bashrc para todos los usuarios:

    export SSH_AUTH_SOCK=${HOME}/.ssh-agent.sock
    
  2. Establezca la variable SSH_AUTH_SOCK en el script .bashrc del usuario. De la misma manera que en el no. 1.

Entonces, cuando un usuario inicia sesión con la línea de comandos y ejecuta bash, el usuario siempre tiene su Socket AUTH configurado en el directorio de inicio. Puede que tenga que hacerlo para otros shells de manera similar Y siempre debe asegurarse de que el directorio del agente exista. Por supuesto, no puedo garantizar que esto funcione también con los clientes de GUI también conocidos como CyberDuck.

    
respondido por el Garex 19.03.2015 - 14:06

Lea otras preguntas en las etiquetas