Git terus menanyakan kata sandi kunci ssh saya


538

Saya membuat kunci seperti yang diperintahkan dalam tutorial github, mendaftarkannya dengan github, dan mencoba menggunakan ssh-agent secara eksplisit - namun git terus menanyakan kata sandi saya setiap kali saya mencoba melakukan tarikan atau dorongan.

Apa yang bisa menjadi penyebabnya?


Jawaban:


1039

Setelah Anda memulai agen SSH dengan:

eval $(ssh-agent)
  1. Anda harus menambahkan kunci pribadi Anda ke sana:

    ssh-add
    

    Ini akan menanyakan kata sandi Anda sekali saja, dan kemudian Anda harus mendorong, asalkan Anda mengunggah kunci publik ke Github.

  2. Untuk menyimpan kunci secara permanen di macOS:

    ssh-add -K  
    

    Ini akan bertahan setelah Anda menutup dan membukanya kembali dengan menyimpannya di gantungan kunci pengguna.


16
log-out dari server, ssh kembali, jalankan git pull, minta saya untuk kata sandi lagi.
cyber8200

35
ssh-add -Kakan bertahan setelah Anda menutup dan membukanya kembali dengan menyimpannya di gantungan kunci pengguna.
Kirk

72
@Kirk ssh-add -Kmemberikan yang berikut: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.
Sandeep C

13
Saya tetap diminta untuk frasa sandi terlepas.
IgorGanapolsky

21
-Kspesifik apel. Lihat help.github.com/articles/…
bkdir

238

Ini telah terjadi pada saya setelah restart sejak memutakhirkan dari OS X El Capitan (10.11) ke macOS Sierra (10.12). The ssh-addsolusi bekerja sementara tetapi tidak akan bertahan di restart lain.

Solusi permanen adalah mengedit (atau membuat) ~/.ssh/configdan mengaktifkan UseKeychainopsi.

Host *
    UseKeychain yes

Terkait: macOS terus menanyakan frasa sandi ssh saya sejak saya memperbarui ke Sierra


1
bekerja untuk saya, terima kasih ... saya telah melakukan ... ssh-add -K /Users/***/.ssh/git/id_rsatapi itu masih tidak berfungsi setelah terminal restart ... terima kasih.
nawlbergs

2
Ingin mengapa ini terjadi? Baca catatan teknis tentang perubahan OpenSSH developer.apple.com/library/content/technotes/tn2449/…
samwize

62

Jika Anda sudah mencoba ssh-adddan Anda masih diminta memasukkan kata sandi Anda, maka coba gunakan ssh-add -K. Ini menambahkan frasa sandi Anda ke gantungan kunci Anda.

Pembaruan: jika Anda menggunakan macOS Sierra maka Anda kemungkinan harus melakukan langkah lain karena hal di atas mungkin tidak lagi berfungsi. Tambahkan yang berikut ke Anda ~/.ssh/config:

Host *
  UseKeychain yes

2
Masih meminta saya untuk frasa sandi.
IgorGanapolsky

@IgorGanapolsky Apakah Anda menggunakan macOS Sierra? Jika demikian, lihat apa yang baru saja saya tambahkan ke jawabannya. Saya harap itu membantu.
Darryl Young

2
Ya, saya di Sierra. Namun, inilah garis yang bekerja untuk saya juga: AddKeysToAgent ya
IgorGanapolsky

1
Ini juga berfungsi dengan BitBucket Cloud. Saya mengalami masalah di GitKraken dan ini menyelesaikan masalah saya.
Maleakhi

54

Saya akan mencoba yang berikut:

  1. Mulai GitBash
  2. Edit ~/.bashrcfile Anda
  3. Tambahkan baris berikut ke file

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
  1. Simpan dan tutup file
  2. Tutup GitBash
  3. Buka kembali GitBash
  4. Masukkan frasa sandi Anda

4
Untuk referensi di masa mendatang, ini juga berfungsi dengan zsh. Tambahkan saja ini ke.zshrc
Arda

2
Saya percaya ini menganggap keyfile Anda dipanggil id_rsa. Jika Anda memiliki nama khusus, Anda harus menggunakan mis. /usr/bin/ssh-add ~/.ssh/custom_filename
Juha Untinen

2
Bisakah Anda jelaskan apa yang terjadi pada skrip ini?
LeeR

2
@Lee itu memulai ssh-agent jika belum berjalan, yang memastikan untuk tidak menanyakan kata sandi ssh pada setiap dorongan (kurang lebih).
Roland

Ini hanya menjalankan ssh-agent dan menambahkan kunci pada setiap login. Anda masih harus memasukkan kata sandi setiap kali Anda masuk. Jadi misalnya jika Anda memiliki skrip ssh-ing dan melakukan perintah GIT, sayangnya ini tidak berguna sama sekali.
trainoasis



6

Saya memiliki masalah serupa, tetapi jawaban lainnya tidak memperbaiki masalah saya. Saya pikir saya akan pergi ke depan dan memposting ini kalau-kalau ada orang lain yang memiliki pengaturan seperti saya.

Ternyata saya punya beberapa kunci dan Git menggunakan yang salah dulu. Itu akan meminta saya untuk frasa sandi saya, dan saya akan memasukkannya, lalu Git akan menggunakan kunci lain yang akan berfungsi (bahwa saya tidak perlu memasukkan kata sandi itu).

Saya baru saja menghapus kunci yang digunakannya untuk meminta saya memasukkan frasa sandi dan sekarang berfungsi!


5

Sepertinya Anda mungkin mengalami masalah dengan SSH-Agent itu sendiri. Saya akan mencoba memecahkan masalah itu.

1) Apakah Anda melakukan ssh-add untuk menambahkan kunci Anda ke SSH?

2) Apakah Anda menutup jendela terminal di antara kegunaan, karena jika Anda menutup jendela Anda harus memasukkan kata sandi lagi ketika Anda membukanya kembali.


2
Alangkah baiknya menambahkan informasi tentang cara mengatasi masalah pertama Jeff Welling.
ranu

5

Jika solusi di atas tidak bekerja untuk saya, satu hal yang perlu diperiksa adalah Anda benar-benar memiliki kunci publik juga (biasanya id_rsa.pub). Tidak biasa untuk tidak melakukannya, tapi itu adalah penyebab bagiku.

Untuk membuat kunci publik dari kunci pribadi Anda:

ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub

1

Saya mencoba berbagai solusi tetapi tidak ada yang membantu. Tapi langkah-langkah ini ( lingkungan GitBash SSH saya selalu meminta frasa sandi saya, apa yang bisa saya lakukan? ) Dari lapisan Bitbucket.com berfungsi dengan baik:

Idenya adalah:

  1. Anda membuat ~/.bashrcfile

  2. tambahkan ikuti skrip:

    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
    
  3. jalankan kembali Bash


1

Solusi lain yang mungkin tidak disebutkan di atas adalah memeriksa remote Anda dengan perintah berikut:

git remote -v

Jika remote tidak memulai dengan git tetapi mulai dengan https Anda mungkin ingin mengubahnya menjadi git dengan mengikuti contoh di bawah ini.

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.