[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: ssh-agent without graphical display manager? how?



On Sun, Jan 04, 2009 at 12:18:32PM -0700, Paul E Condon wrote:
> On Sun, Jan 04, 2009 at 08:38:46PM +0200, Andrei Popescu wrote:
> > On Sun,04.Jan.09, 08:55:27, Paul E Condon wrote:
> > > I'm in the process of converting from nfs to sshfs on my home-grown
> ...
> 
> > 
> > As far as I recall the manpage of ssh-agent has generic instructions on 
> > how to start it.
> > 
> 
> The man page instructions assume that one is running a graphical display
> manager, and I am not. This is precisely why I need help, IMHO.


from memory the example uses pinentry - which handles there being a
graphical display and a ncurses display


I have a startup script which I place in .bash_rc which setups up gpg
agent and ssh agent (seems like the gpg agent can do ssh agent work as
well)



#!/bin/dash

#
# Agent startup scripts

# Set the agents to use
GPGAGENT='/usr/bin/gpg-agent'
SSHAGENT='/usr/bin/gpg-agent'
#SSHAGENT='/usr/bin/ssh-agent'

# Env
GPG_ENV="$HOME/.gnupg/gpg-agent-info-$(hostname)"
SSH_ENV="$HOME/.ssh/environment"

# use gpg-agent to provide ssh-agent functionality
if [ "$GPGAGENT" = "$SSHAGENT" ]
then
	SSHFUNC='--enable-ssh-support'
else
	# if we are starting ssh-agent then don't start ssh support in gpg
	SSHFUNC=''
fi


# Start functions 
startgpgagent() {
	eval `gpg-agent $SSHFUNC --daemon --write-env-file "$GPG_ENV"`
}
	

startsshagent() {
	/usr/bin/ssh-agent -s | grep '^SSH' > "${SSH_ENV}"
	chmod 600 "${SSH_ENV}"
	. "${SSH_ENV}" > /dev/null
}


if [ -x "$GPGAGENT" ]
then

	# From the man page
	GPG_TTY=`tty`
	
	
	if [ -f "$GPG_ENV" ]
	then
		DPID="$(grep GPG_AGENT_INFO $GPG_ENV  | cut -d : -f 2)"
		
		PIDCMD="$(ps -p "$DPID" --no-heading --format comm)"
		if [ "x$PIDCMD" = "xgpg-agent" ]
		then
			. "$GPG_ENV"
		else
			startgpgagent
		fi 
		
	else
		startgpgagent
	fi
	
	export GPG_AGENT_INFO 
	export GPG_TTY
	if [ ! -z "$SSHFUNC" ]
	then
		export SSH_AUTH_SOCK
		export SSH_AGENT_PID
	fi

	echo UPDATESTARTUPTTY | gpg-connect-agent >/dev/null

fi

if [ "$GPGAGENT" != "$SSHAGENT" ] && [ -x "$SSHAGENT" ]
then
	# Source SSH settings, if applicable
	if [ -f "${SSH_ENV}" ]; then

		DPID="$(sed -ne 's/^SSH_AGENT_PID=\([^;]*\);.*$/\1/p' ${SSH_ENV})"
		PIDCMD="$(ps -p "$DPID" --no-heading --format comm)"

		if [ "x$PIDCMD" = "xssh-agent" ]
		then
			. "${SSH_ENV}" 
		else
			startsshagent
		fi
	else
	     startsshagent
	fi

	export SSH_AUTH_SOCK
	export SSH_AGENT_PID

fi



Also because I have a shared home directory I use hostname in the file
handles pinentry-gtk2 is the package I use (which handles curses entry
as well)


> 
> -- 
> Paul E Condon           
> pecondon@mesanetworks.net
> 
> 
> -- 
> To UNSUBSCRIBE, email to debian-user-REQUEST@lists.debian.org 
> with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
> 
> 

-- 
The secret of happiness is total disregard of everybody.

Attachment: signature.asc
Description: Digital signature


Reply to: