PYENV prompt.
[profile.git] / .profile.d / ssh.bashrc
index 17cd4bb..65d117d 100644 (file)
@@ -1,46 +1,17 @@
-SOCKET=~/.ssh/agent
-
-function get_agent_pid() {
-  ps waux | grep -- ^$USER\ .\*ssh-agent\ -a\ .\*\ -s | grep -v grep | awk '{ print $2 }' | head -n 1
-}
-
-if [ ! -z "$SSH_CLIENT" ]; then
-  # Set display if we aren't already forwarding X11
-  if [ "$DISPLAY" = "" ]; then
-    export DISPLAY="$(echo $SSH_CLIENT | cut -s -d ' ' -f 1):0"
-  fi
-fi
-
-# Try to hook up with already running ssh-agent.
 if [ $UID -gt 0 ]; then
-  # Not all OSes support ``ps -wu''.
-  RUNNING_AGENT="$(get_agent_pid)"
-
-  # Has the socket gone away?
-  if [ ! -z "$RUNNING_AGENT" -a ! -S "$SOCKET" ]; then
-    if kill $RUNNING_AGENT; then
-      RUNNING_AGENT="$(get_agent_pid)"
-    else
-      echo >&2 "$SOCKET has gone away but agent is running as PID $RUNNING_AGENT."
-    fi
-  fi
-
-  if [ -z "$SSH_AGENT_PID" -o ! "$SSH_AGENT_PID" = "$RUNNING_AGENT" ]; then
-    export SSH_AGENT_PID="$RUNNING_AGENT"
-    if [ "$SSH_AGENT_PID" = "" ]; then
-      unset SSH_AGENT_PID
-      unset SSH_AUTH_SOCK
-      # Start ssh-agent up then.
-      rm -f "$SOCKET"
-      eval $(/usr/bin/ssh-agent -a "$SOCKET" -s)
-      trap "kill $SSH_AGENT_PID" 0
-      ssh-add
-    else
-      export SSH_AUTH_SOCK="$SOCKET"
+  # Hack to prevent confusion between two agents when launched from xdm.
+  if [ ! $SHLVL = 1 -o -z "$DESKTOP_SESSION" ]; then
+    # Read a list of hosts which can run an agent from ~/.ssh/agenthosts.
+    if [ -f ~/.ssh/agenthosts ]; then
+      while read allowed; do
+        if [ "${HOSTNAME%%.*}" = "$allowed" ]; then
+          eval $(keychain -q --timeout 7200 --agents ssh --eval)
+          if [ -t 0 ]; then
+            ssh-add -l >/dev/null || ssh-add
+          fi
+        fi
+      done < ~/.ssh/agenthosts
+      unset allowed
     fi
   fi
-  unset RUNNING_AGENT
 fi
-
-unset SOCKET
-unset get_agent_pid