web-dev-qa-db-fra.com

Comment garder ma phrase secrète ssh en mémoire lors d'une session Ubuntu?

Si j'ouvre un terminal gnome et que je me connecte à un serveur via SSH, mon mot de passe composé est demandé par une invite de texte dans mon terminal au lieu d'une interface graphique et, pire, ce mot de passe n'est pas stocké en mémoire pendant la durée de ma session Ubuntu. .

Au contraire, j'utilise des clés PGP avec Enigmail dans Thunderbird et je ne dois entrer mes phrases secrètes qu'une fois par session, à l'aide d'une interface graphique.

Il semble que 3 agents soient installés et fonctionnent: seahorse-daemon, gpg-agent et ssh-agent, et ils ne semblent pas bien jouer. J'ai aussi un gnome-keyring en cours d'exécution. Je ne comprends pas ce que chacun de ces programmes est censé faire.

ssh-agent est exécuté par mon système avec "/ usr/bin/gpg-agent" comme premier argument de commande, et je ne comprends pas ce que cela signifie.

Comment puis-je configurer quel agent utiliser pour les clés ssh?

3
YS1

Je n'utilise pas l'interface graphique dans "paramètres" -> "mots de passe et clés"

J'ai installé le trousseau.

Sudo apt-get install keychain

Si vous utilisez bash, vous devez ajouter quelques commandes à votre fichier .bash_profile. Si vous n'avez pas de fichier .bash_profile, créez-en une dans votre dossier personnel. Ajoutez ces lignes:

### START-Keychain ###
# Let  re-use ssh-agent and/or gpg-agent between logins
/usr/bin/keychain $HOME/.ssh/id_dsa
source $HOME/.keychain/$HOSTNAME-sh
### End-Keychain ###

Je me connecterai au début d'une journée de travail. Lorsque j'ouvre un terminal, on me demandera une fois ma phrase secrète. Pour tous les autres nouveaux terminaux et connexions, on ne me demandera plus ma phrase secrète.

2
walpha

Exécutez ssh-add dans un terminal, puis tapez votre phrase secrète lorsque vous y êtes invité. Si cela fonctionne, tous les accès ultérieurs à votre clé ssh doivent simplement fonctionner sans invite, dans tous les terminaux et applications fonctionnant dans la même session X.

1
Robie Basak

J'ai fait beaucoup d'essais et de recherches pour découvrir que la plupart des documents sont périmés. Voici un moyen simple et pourtant efficace de le faire fonctionner.

Au bas de votre fichier .bashrc, mettez simplement ceci dans:

# use a tty for gpg
# solves error: "gpg: signing failed: Inappropriate ioctl for device"
GPG_TTY=$(tty)
export GPG_TTY
# Start the gpg-agent if not already running
if ! pgrep -x -u "${USER}" gpg-agent >/dev/null 2>&1; then
    gpg-connect-agent /bye >/dev/null 2>&1
    gpg-connect-agent updatestartuptty /bye >/dev/null
fi
# Set SSH to use gpg-agent
unset SSH_AGENT_PID
if [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then
    export SSH_AUTH_SOCK="${HOME}/.gnupg/S.gpg-agent.ssh"
fi
# add alias for ssh to update the tty
alias ssh="gpg-connect-agent updatestartuptty /bye >/dev/null; ssh"

J'espère que cela épargnera à quelqu'un le casse-tête de retrouver l'ancienne documentation.

0
Pete