diff options
-rwxr-xr-x | ssh-agent-eval | 74 | ||||
-rwxr-xr-x | ssh-agent-keychain (renamed from ssh-agent-loadkeys) | 31 |
2 files changed, 57 insertions, 48 deletions
diff --git a/ssh-agent-eval b/ssh-agent-eval index 82d6fb1..36f51ca 100755 --- a/ssh-agent-eval +++ b/ssh-agent-eval @@ -1,49 +1,53 @@ -#!/bin/bash +#!/bin/sh # # Initializes the ssh-agent # -# SSH Agent -#SSHAGENT=/usr/bin/ssh-agent -#SSHAGENTARGS="-s" -# -#function ssh_agent_eval_run { -# eval `$SSHAGENT $SSHAGENTARGS` &> /dev/null +# Parameters +SSH_AGENT=/usr/bin/ssh-agent +SSH_AGENT_ARGS="-s" +SSH_ENV="$HOME/.ssh/environment" + +# Start agent, old implementation +#ssh_agent_eval_run() { +# eval `$SSH_AGENT $SSH_AGENT_ARGS` &> /dev/null # trap "ps $SSH_AGENT_PID &> /dev/null && kill $SSH_AGENT_PID" 0 #} -# -#if [ "$1" == "-f" ]; then -# echo "Starting a new ssh-agent..." -# ssh_agent_eval_run -#elif [ -z "$SSH_AUTH_SOCK" -a -x "$SSHAGENT" ]; then -# ssh_agent_eval_run -#fi -# See http://mah.everybody.org/docs/ssh +# Start agent, new implementation +# Check http://mah.everybody.org/docs/ssh +start_agent() { + echo "" > "${SSH_ENV}" + chmod 600 "${SSH_ENV}" -SSH_ENV="$HOME/.ssh/environment" + echo -n "Initialising new SSH agent..." + ${SSH_AGENT} ${SSH_AGENT_ARGS} | sed 's/^echo/#echo/' >> "${SSH_ENV}" + echo succeeded -function start_agent { - echo "Initialising new SSH agent..." - /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}" - echo succeeded - chmod 600 "${SSH_ENV}" - . "${SSH_ENV}" > /dev/null - /usr/bin/ssh-add; - - if [ -x "/usr/bin/monkeysphere" ]; then - /usr/bin/monkeysphere subkey-to-ssh-agent - fi + . "${SSH_ENV}" > /dev/null + /usr/bin/ssh-add; + + if [ -x "/usr/bin/monkeysphere" ]; then + /usr/bin/monkeysphere subkey-to-ssh-agent + fi } -# Source SSH settings, if applicable +# Old implementation +#if [ "$1" == "-f" ]; then +# echo "Starting a new ssh-agent..." +# ssh_agent_eval_run +#elif [ -z "$SSH_AUTH_SOCK" -a -x "$SSH_AGENT" ]; then +# ssh_agent_eval_run +#fi +# New implementation +# Check http://mah.everybody.org/docs/ssh if [ -f "${SSH_ENV}" ]; then - . "${SSH_ENV}" > /dev/null - #ps ${SSH_AGENT_PID} doesn't work under cywgin - ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || { - start_agent; - } + . "${SSH_ENV}" > /dev/null + #ps ${SSH_AGENT_PID} doesn't work under cywgin + ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || { + start_agent; + } else - start_agent; -fi + start_agent; +fi diff --git a/ssh-agent-loadkeys b/ssh-agent-keychain index 81dfe1b..0083283 100755 --- a/ssh-agent-loadkeys +++ b/ssh-agent-keychain @@ -1,19 +1,24 @@ -#!/bin/bash +#!/bin/sh # -# Load keys into the ssh-agent -# Uses monkeysphere and keychain +# Manage ssh-agent with Keychain: +# +# * https://www.funtoo.org/Funtoo:Keychain +# * https://wiki.archlinux.org/title/SSH_keys#Keychain # # Check for keychain if [ -x '/usr/bin/keychain' ]; then mkdir -p $HOME/.keychain + if [ -z "$FQDN" ]; then + FQDN="`cat /etc/hostname`" + fi + # Setup keychain /usr/bin/keychain -q --noask - # Load ssh-agent info - if [ -e "$HOME/.keychain/$HOSTNAME-sh" ]; then - . $HOME/.keychain/$HOSTNAME-sh + if [ -e "$HOME/.keychain/$FQDN-sh" ]; then + . $HOME/.keychain/$FQDN-sh fi # Load gpg-agent info @@ -33,16 +38,16 @@ if [ -x '/usr/bin/keychain' ]; then fi # Check for RSA key - if [ -e "$HOME/.ssh/id_rsa" ]; then - /usr/bin/keychain -q $HOME/.ssh/id_rsa - fi + #if [ -e "$HOME/.ssh/id_rsa" ]; then + # /usr/bin/keychain -q $HOME/.ssh/id_rsa + #fi # Check for ED25519 key - if [ -e "$HOME/.ssh/id_ed25519" ]; then - /usr/bin/keychain -q $HOME/.ssh/id_ed25519 - fi + #if [ -e "$HOME/.ssh/id_ed25519" ]; then + # /usr/bin/keychain -q $HOME/.ssh/id_ed25519 + #fi - # Autoload remaining keys + # Autoload keys if [ -d "$HOME/.ssh/autoload" ]; then for key in `ls $HOME/.ssh/autoload`; do /usr/bin/keychain -q $HOME/.ssh/autoload/$key |