AFAIK, nie ma konfiguracji w sshd_config
lub w ssh_config
celu określenia limitu czasu ssh-agent
. Z openssh
kodu źródłowego plik ssh-agent.c
:
/* removes expired keys and returns number of seconds until the next expiry */
static time_t
reaper(void)
{
time_t deadline = 0, now = monotime();
Identity *id, *nxt;
int version;
Idtab *tab;
for (version = 1; version < 3; version++) {
tab = idtab_lookup(version);
for (id = TAILQ_FIRST(&tab->idlist); id; id = nxt) {
nxt = TAILQ_NEXT(id, next);
if (id->death == 0)
continue;
if (now >= id->death) {
debug("expiring key '%s'", id->comment);
TAILQ_REMOVE(&tab->idlist, id, next);
free_identity(id);
tab->nentries--;
} else
deadline = (deadline == 0) ? id->death :
MIN(deadline, id->death);
}
}
if (deadline == 0 || deadline <= now)
return 0;
else
return (deadline - now);
}
I w process_add_identity
funkcji:
process_add_identity(SocketEntry *e, int version)
{
....
if (lifetime && !death)
death = monotime() + lifetime;
....
}
lifetime
jest zmienną globalną i zmienia wartość tylko podczas analizowania argumentu:
/* Default lifetime in seconds (0 == forever) */
static long lifetime = 0;
int
main(int ac, char **av)
{
....
case 't':
if ((lifetime = convtime(optarg)) == -1) {
fprintf(stderr, "Invalid lifetime\n");
usage();
}
....
}
Jeśli używasz Ubuntu, można ustawić domyślne opcje ssh-agent
w /etc/X11/Xsession.d/90x11-common_ssh-agent
:
STARTSSH=
SSHAGENT=/usr/bin/ssh-agent
SSHAGENTARGS="-t 1h"
if has_option use-ssh-agent; then
if [ -x "$SSHAGENT" ] && [ -z "$SSH_AUTH_SOCK" ] \
&& [ -z "$SSH2_AUTH_SOCK" ]; then
STARTSSH=yes
if [ -f /usr/bin/ssh-add1 ] && cmp -s $SSHAGENT /usr/bin/ssh-agent2; then
# use ssh-agent2's ssh-agent1 compatibility mode
SSHAGENTARGS=-1
fi
fi
fi
if [ -n "$STARTSSH" ]; then
STARTUP="$SSHAGENT $SSHAGENTARGS ${TMPDIR:+env TMPDIR=$TMPDIR} $STARTUP"
fi
SSHAGENTARGS="-s -t 3600"
i zatrzymuje się bez błędu, pusty ekran. Ale tylko ciekawość, ponieważ twoja odpowiedź jest prawidłowa i nic się nie zatrzymuje.Jeśli dzwonisz
ssh-add
w wierszu poleceń, utwórz alias powłoki. Umieść następujący wiersz w swoim~/.bashrc
(jeśli używasz bash) lub~/.zshrc
(jeśli używasz zsh) lub innym odpowiednim pliku inicjującym powłokę:Jeśli chcesz dodać klucz, który nie wygasa, użyj
\ssh-add /path/to/key
lubssh-add -t 0 /path/to/key
.Jeśli
ssh-add
jest wywoływany z innego programu, sprawdź, czy można go skonfigurować do przyjmowania argumentów. Jeśli to nie wystarczy, utwórz plik wcześnie$PATH
(~/bin
jest to powszechny wybór katalogu, upewnij się, że znajduje się na początku swojego plikuPATH
i utwórz go, jeśli nie istnieje) o nazwiessh-add
zawierającej(W razie potrzeby zastąp
/usr/bin/ssh-add
ścieżką dossh-add
pliku binarnego.)źródło
Domyślny limit czasu jest na zawsze. Możliwe jest jednak ustawienie domyślnego limitu czasu dla konkretnego agenta za pomocą
-t
opcjissh-agent
.od człowieka
ssh-agent
:źródło
ssh-add
aby domyślnie było coś innego niż na zawsze? Jeśli po prostu uruchomięssh-add
bez żadnych parametrów, chciałbym, aby upłynął limit czasu po godzinie.ssh-agent
?