ssh.sh 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #############################################################################
  2. #
  3. # SSH Environment Setup
  4. #
  5. #############################################################################
  6. SSH_ENV=$HOME/.ssh/environment
  7. USE_SSH_AGENT=true;
  8. USE_GPG_AGENT=true;
  9. # Start the ssh-agent if it exists
  10. function _start_ssh_agent {
  11. echo "Initializing new SSH agent..."
  12. # spawn ssh-agent
  13. /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
  14. echo succeeded
  15. chmod 600 "${SSH_ENV}"
  16. . "${SSH_ENV}" > /dev/null
  17. /usr/bin/ssh-add
  18. }
  19. function start-ssh-agent() {
  20. if $USE_SSH_AGENT && command -v ssh-agent >/dev/null 2>&1; then
  21. if [ -f "${SSH_ENV}" ]; then
  22. source "${SSH_ENV}" > /dev/null
  23. ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || _start_ssh_agent;
  24. else
  25. _start_ssh_agent;
  26. fi
  27. fi
  28. }
  29. function start-gpg-keychain() {
  30. if ! pgrep -x -i "GPG\ Keychain" > /dev/null; then
  31. if [ -d "/Applications/GPG Keychain.app" ]; then
  32. /Applications/GPG\ Keychain.app/Contents/MacOS/GPG\ Keychain & 2>&1;
  33. disown;
  34. fi
  35. fi
  36. }
  37. # Start up the gpg agent if it exists
  38. function start-gpg-agent() {
  39. if $USE_GPG_AGENT && command -v gpg-agent >/dev/null 2>&1 ; then
  40. [ -f ~/.gpg-agent-info ] && source ~/.gpg-agent-info
  41. if [ -S "${GPG_AGENT_INFO%%:*}" ]; then
  42. export GPG_AGENT_INFO;
  43. export SSH_AUTH_SOCK;
  44. export SSH_AGENT_PID;
  45. else
  46. echo "Initializing new GPG agent...";
  47. eval $( gpg-agent --daemon --enable-ssh-support );
  48. fi
  49. fi
  50. }
  51. function fix-gpg-agent () {
  52. killall ssh-agent gpg-agent;
  53. unset GPG_AGENT_INFO SSH_AGENT_PID SSH_AUTH_SOCK;
  54. start-gpg-agent;
  55. ssh-add -l;
  56. start-gpg-keychain;
  57. }