Utworzyłem klucze zgodnie z instrukcją github, zarejestrowałem je w github i spróbowałem jawnie użyć ssh-agent - jednak git nadal prosi mnie o moje hasło za każdym razem, gdy próbuję wykonać pull lub push.
Co może być przyczyną?
Utworzyłem klucze zgodnie z instrukcją github, zarejestrowałem je w github i spróbowałem jawnie użyć ssh-agent - jednak git nadal prosi mnie o moje hasło za każdym razem, gdy próbuję wykonać pull lub push.
Co może być przyczyną?
Odpowiedzi:
Po uruchomieniu agenta SSH z:
eval $(ssh-agent)
Musisz dodać do niego swój klucz prywatny:
ssh-add
Spowoduje to podanie hasła tylko raz, a następnie powinieneś mieć możliwość wypychania, pod warunkiem, że przesłałeś klucz publiczny do Github.
Aby trwale zapisać klucz w systemie macOS:
ssh-add -K
Spowoduje to utrwalenie go po zamknięciu i ponownym otwarciu poprzez zapisanie go w pęku kluczy użytkownika.
git pull
, ponownie poproś mnie o hasło.
ssh-add -K
zachowa go po zamknięciu i ponownym otwarciu, przechowując go w pęku kluczy użytkownika.
ssh-add -K
podaje:unknown option -- K usage: ssh-add [options] [file ...] Options: -l List fingerprints of all identities. -L List public key parameters of all identities. -k Load only keys and not certificates. -c Require confirmation to sign using identities -t life Set lifetime (in seconds) when adding identities. -d Delete identity. -D Delete all identities. -x Lock agent. -X Unlock agent. -s pkcs11 Add keys from PKCS#11 provider.
-K
jest specyficzny dla jabłek. Zobacz help.github.com/articles/…
Zdarzyło mi się to po ponownym uruchomieniu od aktualizacji z OS X El Capitan (10.11) do macOS Sierra (10.12). ssh-add
Rozwiązanie pracował tymczasowo, ale nie utrzymują się na inny restarcie.
Stałym rozwiązaniem była edycja (lub tworzenie) ~/.ssh/config
i włączenie UseKeychain
opcji.
Host *
UseKeychain yes
Powiązane: macOS ciągle pyta o moje hasło ssh od czasu aktualizacji do Sierra
ssh-add -K /Users/***/.ssh/git/id_rsa
ale nadal nie działało po ponownym uruchomieniu terminala ... dziękuję.
Jeśli próbowałeś ssh-add
i nadal pojawia się monit o podanie hasła, spróbuj użyć ssh-add -K
. To doda Twoje hasło do pęku kluczy.
Aktualizacja: jeśli używasz macOS Sierra, prawdopodobnie musisz zrobić kolejny krok, ponieważ powyższe może już nie działać. Dodaj następujące elementy do ~/.ssh/config
:
Host *
UseKeychain yes
Spróbowałbym następujących rzeczy:
~/.bashrc
plik
SSH_ENV=$HOME/.ssh/environment
# start the ssh-agent
function start_agent {
echo "Initializing new SSH agent..."
# spawn ssh-agent
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > ${SSH_ENV}
echo succeeded
chmod 600 ${SSH_ENV}
. ${SSH_ENV} > /dev/null
/usr/bin/ssh-add
}
if [ -f "${SSH_ENV}" ]; then
. ${SSH_ENV} > /dev/null
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi
zsh
. Po prostu dodaj to do.zshrc
id_rsa
. Jeśli masz niestandardową nazwę, powinieneś użyć np. /usr/bin/ssh-add ~/.ssh/custom_filename
W systemie Windows zadziałało (sklonowałem kod z repozytorium 1st):
eval $(ssh-agent)
ssh-add
git pull
w którym momencie poprosił mnie po raz ostatni o moje hasło
Kredyty: rozwiązanie pochodzi z /unix/12195/how-to-avoid-being-asked-passphrase-each-time-i-push-to-bitbucket
Spróbuj dodać to do ~ / .ssh / config :
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
... zakładając, że twój klucz prywatny nosi nazwę id_rsa
Miałem podobny problem, ale inne odpowiedzi nie rozwiązały mojego problemu. Pomyślałem, że pójdę naprzód i opublikuję to na wypadek, gdyby ktoś inny miał taką nieprzyzwoitą konfigurację jak ja.
Okazuje się, że miałem wiele kluczy, a Git najpierw używał niewłaściwego. Poprosiłoby mnie o podanie hasła i wpisałbym je, a następnie Git użyłby innego klucza, który działałby (że nie musiałem wpisywać hasła).
Właśnie usunąłem klucz, którego używał, aby poprosić mnie o hasło, a teraz działa!
Wygląda na to, że masz problemy z samym agentem SSH. Spróbuję to rozwiązać.
1) Czy zrobiłeś ssh-add, aby dodać swój klucz do SSH?
2) Czy zamykasz okno terminala między użytkami, ponieważ jeśli zamkniesz okno, będziesz musiał ponownie wprowadzić hasło po ponownym otwarciu.
Jeśli powyższe rozwiązania nie działają dla mnie, jedną rzeczą do sprawdzenia jest to, czy faktycznie masz klucz publiczny (zwykle id_rsa.pub
). Nie jest to niezwykłe, ale to było dla mnie przyczyną.
Aby utworzyć swój klucz publiczny z klucza prywatnego:
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
Próbuję różnych rozwiązań, ale nic nie pomaga. Ale te kroki ( Moje środowisko GitBash SSH zawsze pyta o moje hasło, co mogę zrobić? ) Ze szwów Bitbucket.com działa dobrze:
Chodzi o to:
tworzysz ~/.bashrc
plik
dodaj skrypt śledzenia:
SSH_ENV=$HOME/.ssh/environment
# start the ssh-agent
function start_agent {
echo "Initializing new SSH agent..."
# spawn ssh-agent
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
echo succeeded
chmod 600 "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
/usr/bin/ssh-add
}
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" > /dev/null
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi
uruchom ponownie Bash
Innym możliwym rozwiązaniem, o którym nie wspomniano powyżej, jest sprawdzenie pilota za pomocą następującego polecenia:
git remote -v
Jeśli pilot nie zaczyna się od git, ale zaczyna się od https, możesz zmienić go na git, postępując zgodnie z poniższym przykładem.
git remote -v // origin is https://github.com/user/myrepo.git
git remote set-url origin git@github.com:user/myrepo.git
git remote -v // check if remote is changed