J'utilise git bash. Je dois utiliser
eval `ssh-agent.exe`
ssh-add /my/ssh/location/
chaque fois que je commence une nouvelle bash git.
Est-il possible de définir l'agent ssh de manière permanente? Ou bien Windows a-t-il un bon moyen de gérer les clés SSH?
Je suis un nouveau gars, donnez-moi un tutoriel détaillé, merci!
Dans une session git bash, vous pouvez ajouter un script à ~/.profile
ou ~/.bashrc
( ~
ÉTANT GÉNÉRALEMENT DÉFINI SUR %USERPROFILE%
), afin que ladite session puisse lancer automatiquement le ssh-agent
. Si le fichier n'existe pas, créez-le simplement.
C’est ce que décrit GitHub dans " Utilisation de phrases secrètes de clé SSH ".
La section " Lancement automatique de ssh-agent sur Git for Windows " de cet article contient un script robuste qui vérifie si l'agent est en cours d'exécution ou non. Vous trouverez ci-dessous un extrait de code. Voir l'article de GitHub pour connaître la solution complète.
# This is just a snippet. See the article above.
if ! agent_is_running; then
agent_start
ssh-add
Elif ! agent_has_keys; then
ssh-add
fi
Autres ressources:
" Amener ssh-agent à fonctionner avec git lancé à partir de la commande windows Shell " a un script similaire, mais je ferais référence à l'article de GitHub ci-dessus, qui est plus robuste et à jour.
P.S: Ces instructions sont dans le contexte d'un shell Bash ouvert dans le sous-système Linux Windows 10 et ne mentionnent pas la sym-liaison des clés SSH générées sous Windows avec Bash sous Ubuntu sous Windows}
1) Mettez à jour votre .bashrc en ajoutant ce qui suit
# Set up ssh-agent
SSH_ENV="$HOME/.ssh/environment"
function start_agent {
echo "Initializing new SSH agent..."
touch $SSH_ENV
chmod 600 "${SSH_ENV}"
/usr/bin/ssh-agent | sed 's/^echo/#echo/' >> "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
/usr/bin/ssh-add
}
# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" > /dev/null
kill -0 $SSH_AGENT_PID 2>/dev/null || {
start_agent
}
else
start_agent
fi
2) Puis exécutez $ source ~/.bashrc
pour recharger votre configuration.
Les étapes ci-dessus ont été prises à partir de https://github.com/abergs/ubuntuonwindows#2-start-an-bash-ssh-agent-on-launch
3) Créez un fichier de configuration SSH, s'il n'est pas présent. Utilisez la commande suivante pour en créer un nouveau: .ssh$ touch config
4) Ajouter ce qui suit à ~/.ssh/config
Host github.com-<YOUR_GITHUB_USERNAME>
HostName github.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_work_gmail # path to your private key
AddKeysToAgent yes
Host csexperimental.abc.com
IdentityFile ~/.ssh/id_work_gmail # path to your private key
AddKeysToAgent yes
<More hosts and github configs can be added in similar manner mentioned above>
5) Ajoutez votre clé à l'agent SSH à l'aide de la commande $ ssh-add ~/.ssh/id_work_gmail
et vous devriez alors pouvoir vous connecter à votre compte github ou à votre hôte distant à l'aide de ssh. Par exemple dans le contexte des exemples de code ci-dessus:
$ ssh github.com-<YOUR_GITHUB_USERNAME>
ou
$ ssh <USER>@csexperimental.abc.com
Cet ajout de clé à l'agent SSH ne devrait être effectué qu'une seule fois.
6) Maintenant, déconnectez-vous de votre session Bash sur le sous-système Windows Linux, c’est-à-dire que vous quittez à nouveau toutes les consoles Bash, démarrez une nouvelle console et essayez de passer en SSH sur votre hôte Github ou un autre hôte configuré dans le fichier de configuration SSH. pas.
Remarque:
Si vous faites face à Bad owner or permissions on ~/.ssh/config
, mettez à jour les autorisations à l’aide de la commande chmod 600 ~/.ssh/config
. Référence: https://serverfault.com/a/253314/98910
Pour que les étapes ci-dessus fonctionnent, vous aurez besoin de OpenSSH v 7.2 et plus récent. Si vous en avez un plus ancien, vous pouvez le mettre à niveau en suivant les étapes décrites à https://stackoverflow.com/a/41555393/936494
Les mêmes détails sont disponibles dans le répertoire Gist Problèmes liés à l’agent SSH du sous-système d'exploitation Windows 10 Linux
Merci.
J'ai trouvé que le moyen le plus simple d'y parvenir consistait à utiliser Pageant comme agent SSH et plink.
Vous devez avoir une session PuTTY configurée pour le nom d’hôte utilisé dans votre télécommande.
Vous aurez également besoin de plink.exe, qui peut être téléchargé à partir du même site que PuTTY.
Et vous avez besoin de Pageant en cours d'exécution avec votre clé chargée. J'ai un raccourci vers pageant dans mon dossier de démarrage qui charge ma clé SSH lorsque je me connecte.
Lorsque vous installez git-scm, vous pouvez ensuite le spécifier pour qu'il utilise tortoise/plink plutôt que OpenSSH.
L’effet net est que vous pouvez ouvrir git-bash quand vous le souhaitez et pousser/tirer sans être contesté pour les mots de passe.
Il en va de même avec les sessions PuTTY et WinSCP lorsque pageant a votre clé chargée. Cela rend la vie beaucoup plus facile (et sécurisée).
Comme je n'aime pas utiliser PuTTY dans Windows comme solution de contournement, j'ai créé un utilitaire très simple ssh-agent-wrapper . Il analyse vos dossiers .ssh et ajoute toutes vos clés à l'agent. Vous devez simplement le placer dans le dossier de démarrage de Windows pour que cela fonctionne.
Hypothèses:
Créez un nouveau fichier .bashrc dans votre répertoire ~.
Là vous pouvez mettre vos commandes que vous voulez exécuter à chaque démarrage de la bash
Solution simple en deux chaînes de cette réponse :
Pour sh, bash, etc:
# ~/.profile
if ! pgrep -q -U `whoami` -x 'ssh-agent'; then ssh-agent -s > ~/.ssh-agent.sh; fi
. ~/.ssh-agent.sh
Pour csh, tcsh, etc:
# ~/.schrc
sh -c 'if ! pgrep -q -U `whoami` -x 'ssh-agent'; then ssh-agent -c > ~/.ssh-agent.tcsh; fi'
eval `cat ~/.ssh-agent.tcsh`