Windows'ta Git ve BitBucket ile yeni başlayanlar ve Bash'a aşina olmayanlar için bunu yazıyor (çünkü bu, soru içinde hata mesajını ararken hem yaygın bir sorun hem de yüksek bir Google sonucudur).
HTTPS'yi umursamayan ve hızlı bir düzeltme arayanlar için, LAZY İÇİN İÇİN altındaki talimatlar için bu cevabın alt kısmına gidin
Asıl sorunu çözmek isteyenler için aşağıdaki talimatları izleyin:
SSH sorununu olabildiğince hızlı çözme
Bu, VonC tarafından bağlanan URL'den türetilen bir talimatlar dizisidir. Mümkün olduğunca esnek ve özlü olacak şekilde değiştirildi.
Henüz yapmadıysanız global bilgilerinizi ayarlayın:
$ git config --global user.name "Your Name"
$ git config --global user.email "you@example.com"
OpenSSH'yi kontrol edin:
$ ssh -v localhost
OpenSSH_4.6p1, OpenSSL...
Böyle bir şey gördün mü?
- Evet devam et.
- Hayır: LAZY FOR İÇİN bölümüne geçin veya VonC'nin bağlantılı makalesini takip edin.
Anahtarları zaten oluşturup oluşturmadığınıza bakın:
$ ls -a ~/.ssh/id_*
İki dosya varsa, bir sonraki adımı atlayabilirsiniz.
$ ssh-keygen
Her şeyi varsayılan olarak bırakın, bir parola girin. Şimdi bu komutla sonuçları görmelisiniz:
$ ls -a ~/.ssh/id_*
Mevcut bir yapılandırma dosyasını kontrol edin:
$ ls -a ~/.ssh/config
Sonuç alırsanız, hatalı bilgi için bu dosyayı kontrol edin. Hiçbir dosya yoksa, aşağıdakileri yapın:
$ echo "Host bitbucket.org" >> ~/.ssh/config
$ echo " IdentityFile ~/.ssh/id_rsa" >> ~/.ssh/config
İçeriği onaylayın:
$ cat ~/.ssh/config
Host bitbucket.org
IdentityFile ~/.ssh/id_rsa
- "IdentityFile" dan önce tek boşluk gerekir.
GitBash'i her çalıştırdığınızda SSH aracısını başlattığınızı kontrol edin:
$ cat ~/.bashrc
- Adlı bir işlev görürseniz
start_agent
, bu adım zaten tamamlanmıştır.
- Dosya yoksa, devam edin.
- Bu işlevi içermeyen bir dosya varsa, yapışkan bir durumdasınız demektir. Muhtemelen (aşağıdaki talimatları kullanarak) eklemek güvenlidir, ancak olmayabilir! Emin değilseniz, aşağıdaki talimatları izlemeden önce .bashrc'nizin bir yedeğini alın veya LAZY FOR İÇİN bölümüne geçin .
.Bashrc dosyanızı oluşturmak için GitBash'e şunu girin:
$ echo "SSH_ENV=$HOME/.ssh/environment" >> ~/.bashrc
$ echo "" >> ~/.bashrc
$ echo "# start the ssh-agent" >> ~/.bashrc
$ echo "function start_agent {" >> ~/.bashrc
$ echo " echo \"Initializing new SSH agent...\"" >> ~/.bashrc
$ echo " # spawn ssh-agent" >> ~/.bashrc
$ echo " /usr/bin/ssh-agent | sed 's/^echo/#echo/' > \"\${SSH_ENV}\"" >> ~/.bashrc
$ echo " echo succeeded" >> ~/.bashrc
$ echo " chmod 600 \"\${SSH_ENV}\"" >> ~/.bashrc
$ echo " . \"\${SSH_ENV}\" > /dev/null" >> ~/.bashrc
$ echo " /usr/bin/ssh-add" >> ~/.bashrc
$ echo "}" >> ~/.bashrc
$ echo "" >> ~/.bashrc
$ echo "if [ -f \"\${SSH_ENV}\" ]; then" >> ~/.bashrc
$ echo " . \"\${SSH_ENV}\" > /dev/null" >> ~/.bashrc
$ echo " ps -ef | grep \${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {" >> ~/.bashrc
$ echo " start_agent;" >> ~/.bashrc
$ echo " }" >> ~/.bashrc
$ echo "else" >> ~/.bashrc
$ echo " start_agent;" >> ~/.bashrc
$ echo "fi" >> ~/.bashrc
Dosyanın başarıyla oluşturulduğunu doğrulayın (sizinki yalnızca "kullanıcı adınızın" göründüğü yerde farklı olmalıdır):
$ cat ~/.bashrc
SSH_ENV=/c/Users/yourusername/.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
- GitBash'i kapatın ve tekrar açın.
- Parolanızı girmeniz gerekir (daha önce oluşturduğunuz SSH dosyası için).
- Herhangi bir istem yoksa, bir parola belirlemediniz veya GitBash .bashrc betiğini çalıştırmıyor (garip olurdu, bu yüzden içeriğini gözden geçirmeyi düşünün!). Bunu bir Mac'te (OS X)
.bashrc
çalıştırıyorsanız, varsayılan olarak yürütülmez - .bash_profile
is. Bunu düzeltmek için bu pasajı şuraya koyun .bash_profile
:[[ -s ~/.bashrc ]] && source ~/.bashrc
Bir parola girmeseydiniz, GitBash'i başlatırken şöyle bir şey görürdünüz:
Initializing new SSH agent...
succeeded
Identity added: /c/Users/yourusername/.ssh/id_rsa (/c/Users/yourusername/.ssh/id_rsa)
Ve aşağıdakiler sonuçları döndürmelidir:
$ ssh-add -l
Ancak, aşağıdakilerden birini alırsanız ssh-add -l
:
Could not open a connection to your authentication agent.
SSH ajanını üretmedi ve .bashrc'niz muhtemelen nedeni.
GitBash'i başlatırken şunu görürsünüz:
Initializing new SSH agent...
sh.exe": : No such file or directory
Bu, dosyaya yankılanırken $ 'dan bir \ ile çıkmayı unuttuğunuz anlamına gelir (yani, değişkenler genişletildi). Bu sorunu çözmek için .bashrc dosyanızı yeniden oluşturun.
Aracının çalıştığını ve anahtarlarınızın eklendiğini doğrulayın:
$ ssh-add -l
Buna benzer bir şey döndürmelidir:
2048 0f:37:21:af:1b:31:d5:cd:65:58:b2:68:4a:ba:a2:46 /Users/yourusername/.ssh/id_rsa (RSA)
Ortak anahtarınızı almak için aşağıdaki komutu çalıştırın:
$ cat ~/.ssh/id_rsa.pub
("ssh-rsa ......" ile başlayan bir şey döndürmelidir
- GitBash pencere simgesini tıklayın
- Düzenle'yi tıklayın
- İşaretle'yi tıklayın
- Farenizi kullanarak ortak anahtarı vurgulayın (ön
ssh-rsa
bit ve son == youremail@yourdomain.com
bit dahil)
- Pencereyi sağ tıklayın (bir kopyasını gerçekleştirir)
- Genel anahtarınızı Not Defteri'ne yapıştırın.
- Tüm yeni satırları yalnızca tek bir satır olacak şekilde silin.
- Basın
CTRL+A
sonra CTRL+C
panoya tekrar genel anahtarı kopyalamak için.
Aşağıdaki adımları uygulayarak özel anahtarınızı BitBucket ile yapılandırın:
- Tarayıcınızı açın ve BitBucket.org sitesine gidin
- İçin Oturum BitBucket.org
- Avatarınızı tıklayın (sağ üst)
- Hesabı Yönet'i tıklayın
- SSH Anahtarları'nı tıklayın (soldaki menüde Güvenlik altında)
- Anahtar Ekle'yi tıklayın
Global Public Key
Etiket için Enter
- Not Defteri'nden kopyaladığınız genel anahtarı yapıştırın
Global Public Key
Anahtar girişinizde artık bir giriş görünmelidir.
- GitBash sayfasına dön
- projenizi içeren dizine cd
- Menşeinizi SSH varyasyonuna değiştirin ( LAZY FOR FOR adımlarını çalıştırırsanız olmayacaktır )
Uzaktan kumandalarınızı kontrol edin:
$ git remote -v
SSH URL'sine geçin:
$ git remote set-url origin git@bitbucket.org:youraccount/yourproject.git
İşlerin düzgün çalışıp çalışmadığını kontrol edin:
$ git remote show origin
Bunun gibi bir şey görmelisin:
Warning: Permanently added the RSA host key for IP address '...' to the list of known hosts.
* remote origin
Fetch URL: git@bitbucket.org:youruser/yourproject.git
Push URL: git@bitbucket.org:youruser/yourproject.git
HEAD branch: master
Remote branch:
master tracked
Local ref configured for 'git push':
master pushes to master (fast-forwardable)
YAPILAN!
SSH yerine HTTPS kullanmayı tercih edebilirsiniz. Uzaktan işlemler sırasında parolanızı yazmanız gerekir (bir kez yazıldıktan sonra geçici olarak önbelleğe alınır). HTTPS'yi şu şekilde yapılandırabilirsiniz:
LAZY İÇİN
SSH sorununu VonC tarafından açıklanan şekilde düzeltmelisiniz; ancak, taahhütte bulunmak için acele ediyorsanız ve şu anda yeni bir ortak anahtar oluşturmak için araçlara / zamana / bilgiye sahip değilseniz, kökeninizi HTTPS alternatifine ayarlayın:
> https://accountname@bitbucket.org/accountname/reponame.git
TortoiseGit veya komut satırı araçları gibi bir GUI aracı kullanma .
İşte bu alternatif başlangıç URL'sinin belgeleri.
Varsa bir başlangıç noktası eklemek için komut satırı:
git remote add origin https://accountname@bitbucket.org/accountname/reponame.git
Mevcut bir kaynağı değiştirmek için komut satırı:
git remote set-url origin https://accountname@bitbucket.org/accountname/reponame.git
NOT: hesap adınız e-postanız değil.
Global bilgilerinizi de ayarlamak isteyebilirsiniz:
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
Sonra tekrar denemek (tekrar taahhüt etmeye gerek yok)
git push origin master