From ec3f752bc2ce9aa054009b5701cf731dbd082843 Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Fri, 9 Aug 2024 10:13:00 -0300 Subject: Fix: rename ssh-agent-loadkeys as ssh-agent-keychain; update ssh-agent-eval --- ssh-agent-eval | 74 ++++++++++++++++++++++++++++-------------------------- ssh-agent-keychain | 56 +++++++++++++++++++++++++++++++++++++++++ ssh-agent-loadkeys | 51 ------------------------------------- 3 files changed, 95 insertions(+), 86 deletions(-) create mode 100755 ssh-agent-keychain delete mode 100755 ssh-agent-loadkeys 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-keychain b/ssh-agent-keychain new file mode 100755 index 0000000..0083283 --- /dev/null +++ b/ssh-agent-keychain @@ -0,0 +1,56 @@ +#!/bin/sh +# +# 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 + + if [ -e "$HOME/.keychain/$FQDN-sh" ]; then + . $HOME/.keychain/$FQDN-sh + fi + + # Load gpg-agent info + #if [ -e "$HOME/.keychain/$HOSTNAME-sh-gpg" ]; then + # . $HOME/.keychain/$HOSTNAME-sh-gpg + #fi + + # Check for monkeysphere + if [ -x '/usr/bin/monkeysphere' ]; then + #if ! ssh-add -l &> /dev/null && [ "`gpg --list-secret-keys | wc -l`" != "0" ]; then + # From MONKEYSPHERE(1): "The MONKEYSPHERE_SUBKEYS_FOR_AGENT environment can be used to specify the full + # fingerprints of specific keys to add to the agent (space separated), instead + # of adding them all." + if [ ! -z "$MONKEYSPHERE_SUBKEYS_FOR_AGENT" ]; then + monkeysphere subkey-to-ssh-agent + fi + fi + + # Check for RSA key + #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 + + # Autoload keys + if [ -d "$HOME/.ssh/autoload" ]; then + for key in `ls $HOME/.ssh/autoload`; do + /usr/bin/keychain -q $HOME/.ssh/autoload/$key + done + fi +fi diff --git a/ssh-agent-loadkeys b/ssh-agent-loadkeys deleted file mode 100755 index 81dfe1b..0000000 --- a/ssh-agent-loadkeys +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/bash -# -# Load keys into the ssh-agent -# Uses monkeysphere and keychain -# - -# Check for keychain -if [ -x '/usr/bin/keychain' ]; then - mkdir -p $HOME/.keychain - - # Setup keychain - /usr/bin/keychain -q --noask - - # Load ssh-agent info - if [ -e "$HOME/.keychain/$HOSTNAME-sh" ]; then - . $HOME/.keychain/$HOSTNAME-sh - fi - - # Load gpg-agent info - #if [ -e "$HOME/.keychain/$HOSTNAME-sh-gpg" ]; then - # . $HOME/.keychain/$HOSTNAME-sh-gpg - #fi - - # Check for monkeysphere - if [ -x '/usr/bin/monkeysphere' ]; then - #if ! ssh-add -l &> /dev/null && [ "`gpg --list-secret-keys | wc -l`" != "0" ]; then - # From MONKEYSPHERE(1): "The MONKEYSPHERE_SUBKEYS_FOR_AGENT environment can be used to specify the full - # fingerprints of specific keys to add to the agent (space separated), instead - # of adding them all." - if [ ! -z "$MONKEYSPHERE_SUBKEYS_FOR_AGENT" ]; then - monkeysphere subkey-to-ssh-agent - fi - fi - - # Check for RSA key - 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 - - # Autoload remaining keys - if [ -d "$HOME/.ssh/autoload" ]; then - for key in `ls $HOME/.ssh/autoload`; do - /usr/bin/keychain -q $HOME/.ssh/autoload/$key - done - fi -fi -- cgit v1.2.3