screen(1) running contineously on servers. On some
of them, the screen contains ssh-sessions to further machines. Because
i trust these servers less than my laptop, i don't store secret keys
there, i use
AgentForwarding on the connection to the server and
ssh-add -c $relevant_key on the laptop, so i must confirm
each use of the key through the forwarding.
to the server in question, the
changes, but remains unchanged inside the long-running screen.
screen will prompt for passwords, because the
ssh-agent does not respond on the old path.
i found no clean solution to propagate the change to the
screen windows after re-attaching them.
So i put this in my
on the server
and this line into the
if [ $? -eq 0 ]; then
if [ ! $SSH_AUTH_SOCK = "/tmp/ssh-agent-$USER-screen" ]; then
ln -sf "$SSH_AUTH_SOCK" "/tmp/ssh-agent-$USER-screen"
.screenrc on the server
So all screen windows have
setenv SSH_AUTH_SOCK "/tmp/ssh-agent-$USER-screen"
to the same path always, and when i connect to the server,
the shell soft-links that path to
the actual socket which is forwarded through
ssh-agent on my laptop.