1 votos

¿Es posible cambiar la ruta SSH_AUTH_SOCK?

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

Sin embargo, veo que el agente está gestionado launchctl y este plist: /System/Library/LaunchAgents/org.openbsd.ssh-agent.plist pero no sé cómo modificar este archivo para que el enchufe, por ejemplo, esté en ~/.ssh-agent.sock .

1voto

J.J. Puntos 3543

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 por defecto 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

0voto

Garex Puntos 339

Se puede hacer esto básicamente de dos maneras posibles sin ajustar los archivos plist:

  1. Si siempre usas bash en la Terminal y quieres habilitarlo, establece la ruta a tu socket global en /etc/bashrc para todos los usuarios:

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

Por lo tanto, cada vez que un usuario se conecta con la línea de comandos y hace que se ejecute bash, el usuario siempre tiene su Socket AUTH establecido en el directorio de inicio. Puede que tengas que hacerlo para otros shells de forma similar Y siempre tienes que asegurarte de que el directorio del agente existe. Por supuesto, no puedo garantizar que esto funcione también con clientes GUI como CyberDuck.

0voto

bharat Puntos 101

Termino con un .bashrc script:

# 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 parece que esto no funcionará también para la GUI. La actualización de plist es demasiado doloroso en El Capitán (Reiniciar a la recuperación & SIP deshabilitar -> reiniciar -> editar plist & prueba -> reiniciar a la recuperación & SIP habilitar -> reiniciar), así que para aquellos que está bien tener esto resuelto para la cáscara sólo - esta es una solución de trabajo.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X