Git'e hangi özel anahtarın kullanılacağı nasıl söylenir?


646

ssh-iKimlik doğrulaması yaparken hangi özel anahtar dosyasının kullanılacağını belirleme seçeneğine sahiptir :

-i identity_file

    RSA veya DSA kimlik doğrulaması için kimliğin (özel anahtar) okunduğu bir dosyayı seçer. Varsayılan ~/.ssh/identityprotokol sürüm 1 ve ~/.ssh/id_rsave ~/.ssh/id_dsaprotokol sürüm 2 içindir. Kimlik dosyaları, yapılandırma dosyasında ana bilgisayar başına da belirtilebilir. Birden fazla -iseçeneğe (ve yapılandırma dosyalarında belirtilen birden fazla kimliğe) sahip olmak mümkündür .

Dizinde gitbirden çok özel anahtara sahip bir sistemde hangi özel anahtara kullanılacağını söylemenin benzer bir yolu var mı ~/.ssh?



Yanıtlar:


671

İçine ~/.ssh/configekle:

host github.com
 HostName github.com
 IdentityFile ~/.ssh/id_rsa_github
 User git

Şimdi yapabilirsin git clone git@github.com:username/repo.git.

NOT: IdentityFile üzerindeki izinlerin 400 olduğunu doğrulayın. SSH, açık bir şekilde açıkça okunamayan SSH anahtarlarını reddeder. Sadece bir referans reddi gibi görünecek. Bu durumda çözüm:

chmod 400 ~/.ssh/id_rsa_github

117
Aynı ana bilgisayara farklı anahtarlarla bağlanmanız gerekirse ne olur?
Valentin Klinghammer

6
@Quelltextfabrik - farklı bir Host ile başka bir bölüm ekleyebilirsiniz: nerderati.com/2011/03/…
Ben

1
@Cliff Nop, benim sayfamda: " HostName: Giriş yapmak için gerçek ana bilgisayar adını belirtir. Bu, ana bilgisayarların takma adlarını veya kısaltmalarını belirtmek için kullanılabilir." Benim ssh versiyonu openssh-6.7p1.
Grissiom

11
Eğer config dosyası chmod 600 ~/.ssh/config
yeniyse

2
@ValentinKlinghammer @Flimm tarafından verilen cevap bu sorunun çözümüne sahip. core.sshCommandGit yapılandırmasını kullanmaktır . superuser.com/a/912281/162466
VasyaNovikov

345

Ortam değişkeni GIT_SSH_COMMAND:

Git sürüm 2.3.0'dan, aşağıdaki GIT_SSH_COMMANDgibi ortam değişkenini kullanabilirsiniz :

GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa_example" git clone example

Not -ibazen böyle, bu durumda, sen SSH boş yapılandırma dosyası vermelidir, sizin yapılandırma dosyası tarafından geçersiz kılınabilir:

GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa_example -F /dev/null" git clone example

Yapılandırma core.sshCommand:

Git sürüm 2.10.0'dan bunu repo başına veya global olarak yapılandırabilirsiniz, böylece ortam değişkenini daha fazla ayarlamak zorunda kalmazsınız!

git config core.sshCommand "ssh -i ~/.ssh/id_rsa_example -F /dev/null"
git pull
git push

1
Bu işi yapmak için kabuk değişkenini bir ortam değişkenine vermem gerekiyordu , yani export GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa_example", daha sonragit clone example
Abdull

7
@Abdull Bash'te, komutla aynı satırdaki atamanın yapılması, ortam değişkenini sadece bu komut için dışa aktarır. Deneyin: example=hello /usr/bin/env | grep example.
Flimm

3
işler daha da iyi oldu: Git
2.10'dan

2
@ Noitidart /dev/null, UNIX benzeri işletim sistemlerinde geçerli bir dosya adıdır , Windows'ta çalışmaz.
Flimm

2
Benim için GIT_SSH_COMMANDkullandığım kadar işe yaramadı IdentitiesOnlyböyle bu komutla olarak,: GIT_SSH_COMMAND="ssh -i ~/.ssh/mysubdir/id_rsa -o 'IdentitiesOnly yes'" git push.
Tyler Collier

111

Orada hiçbir doğrudan yolu anlatmak için gito gerektiğinden, kullanımı özel hangi anahtar sshdeposu kimlik doğrulaması için. Ancak, hedefinize ulaşmanın hala birkaç yolu var:

Seçenek 1: ssh-agent

ssh-agentÖzel anahtarınızı geçici olarak yetkilendirmek için kullanabilirsiniz .

Örneğin:

$ ssh-agent sh -c 'ssh-add ~/.ssh/id_rsa; git fetch user@host'

Seçenek 2: GIT_SSH_COMMAND

Ssh argümanlarını GIT_SSH_COMMANDortam değişkenini (Git 2.3.0+) kullanarak iletin.

Örneğin:

$ GIT_SSH_COMMAND='ssh -i ~/.ssh/id_rsa -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' \
  git clone user@host

Bunların hepsini tek bir satıra yazabilirsiniz - yoksayın $ve dışarıda bırakın \.

Seçenek 3: GIT_SSH

GIT_SSHAlternatif sshikilik belirtmek için ortam değişkenini kullanarak ssh argümanlarını iletin.

Örneğin:

$ echo 'ssh -i ~/.ssh/id_rsa -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $*' > ssh
$ chmod +x ssh
$ GIT_TRACE=1 GIT_SSH='./ssh' git clone user@host

Not: Yukarıdaki satırlar, terminalinize yapıştırmanız gereken kabuk (terminal) komut satırlarıdır. Adında bir dosya oluşturacak ssh, çalıştırılabilir hale getirecek ve (dolaylı olarak) yürütecektir.

Not: GIT_SSHv0.99.4'ten (2005) beri kullanılabilir .

Seçenek 4: ~/.ssh/config

~/.ssh/configÖzel anahtarınızın konumunu belirlemek için dosyayı diğer cevaplarda önerildiği şekilde kullanın;

Host github.com
  User git
  Hostname github.com
  IdentityFile ~/.ssh/id_rsa

1
//, ssh-agent'taki kimliğiniz bu soruda olduğu gibi iletildiyse? superuser.com/questions/971732/…
Nathan Basanese

1
Bu yazıyı yeniden biçimlendirmeme izin verdim: IMO bu en kapsamlı cevap. Orijinal tasarımında, hızlı bir tarama, soruna karmaşık bir çözümü tanımlamanın yolunu önerdi, bu yüzden özledim.
Alberto

3
$ ssh-agent sh -c 'ssh-add ~/.ssh/id_rsa; git fetch user@host'başka hiçbir şey yapmazken benim için çalıştı. Kudos.
Daniel Dewhurst

1
~/.ssh/configYöntem kullanmak zorunda kaldım , env vars benim için işe yaramadı ...
Greg Dubicki

1
GIT_SSHv0.99.4'ten (Ağustos 2005) beri geçerlidir , yani temelde Git'in varlığından beri (Nisan 2005).
Dominik

32

sshİstediğiniz bağımsız değişkenleri çağıran bir komut dosyası yazın ve komut dosyasının dosya adını girin $GIT_SSH. Ya da sadece yapılandırmanızı yerleştirin ~/.ssh/config.


2
Bunun nasıl yapılacağı hakkında başka bir açıklama .
Sithsu

1
~/.ssh/configMı gitmek için yol.
hek2mgl

Sadece ssh anahtar doğrulamasını kabul eden bir sunucuya (B) gönderdiğim bir makinede (A) çalışıyorum. Ben doğrudan çalışırken (A) benim ~ / .ssh / config kurulum mükemmel çalışıyor olsa üzerinde o makinenin Ben başka bir yerde (C) giriş yaptığınızda, öyle değil. $GIT_SSHBir komut dosyası kullanmak ve bu sorunu çözdü. Teşekkürler!
bsumirak

18

Her gittiğinizde ortam değişkenleri belirtmek istemiyorsanız, başka bir sarmalayıcı komut dosyası istemiyorsanız, ssh-agent (1) komutunu çalıştırmayın / çalıştırmayın, ya da sadece bunun için başka bir paket indirmek istemeyin -remote-ext (1) dış ulaşım:

$ git clone 'ext::ssh -i $HOME/.ssh/alternate_id git.example.com %S /path/to/repository.git'
Cloning into 'repository'
(...)
$ cd repository
$ git remote -v
origin  ext::ssh -i $HOME/.ssh/alternate_id git.example.com %S /path/to/repository.git (fetch)
origin  ext::ssh -i $HOME/.ssh/alternate_id git.example.com %S /path/to/repository.git (push)

Bu çözümü üstün buluyorum çünkü:

  • Bu depo / uzak belirli
  • Sarıcı komut dosyası şişmesinden kaçının
  • SSH ajanına ihtiyacınız yok - eğer gözetimsiz klonlar / itme / çekme (örneğin cron) istiyorsanız
  • Kesinlikle harici bir alete gerek yok

2
Bu cevap, Chef'in gitkaynağını, özel Github depolarından klonlamak / almak için depoya özel dağıtım anahtarları kullanmaya zorlamak için tam olarak ihtiyacım olan şeydi . Bu yöntemin çevre / komut dosyası tabanlı olanlara göre ek avantajı, anahtar yolunun çalışma-repo yapılandırmasında kodlandığından, hem ilk klonlama hem de sonraki getirmelerde / itmelerde aynı anahtarı kullanmasıdır.
Adam Franco,

2
VAOV! Bu harika, bunu bilmiyordum. Cevap için teşekkürler, kukla ortamlarında da oldukça yardımcı, fazladan zorlukları yönetmemek için .ssh/configvs. +1!
gf_

1
Bu çözüm - özyinelemeli bayrakla birlikte çalışmaz. Alt modüller, belirtilen anahtar kullanılarak alınmaz ve auth gerekiyorsa başarısız olur.
Daniele Testa

1
Her alt modül, kendi uzaktan kumanda seti ile tamamen farklı bir havuzdur. Size kolaylık sağlamak için Git tarafından birbirine yapıştırılmışlardır, ancak hiçbir şekilde bir alt modül için uzaktan ana depodakilere bağlı değildir. Korkarım ki ebeveynin işe yaraması için her alt modüldeki exttaşıma aracını kullanarak uzaktan kumandayı ayarlamanız gerekir .
flaviovs

2
Eğer aşağıdaki hatayla karşılaşırsanız, fatal: transport 'ext' not allowedext protokolünü export GIT_ALLOW_PROTOCOL=ext. Temelde, git-remote-ext uzaktan yardımcı ("ext :: ssh example.com% S foo / repo" URL’lerini destekler) URL’lerin keyfi komut çalıştırılmasına izin verir. Bu normalde hiçbir zaman endişelenmez, çünkü kullanıcı her zaman gitdikleri URL'yi görür ve ona güvenir. Bununla birlikte, git alt modülleri, .gitmodules dosyası aracılığıyla bir saldırganın istemciden isteğe bağlı git URL'leri almalarını istemesini sağlar. hackerone.com/reports/104465
Gomino

18

Özel ana bilgisayar yapılandırmasını şu şekilde kullanın ~/.ssh/config:

Host gitlab-as-thuc  
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa.thuc
    IdentitiesOnly yes

daha sonra şunun gibi özel ana bilgisayar adınızı kullanın:

git remote add thuc git@gitlab-as-thuc:your-repo.git  

2
Ev ve iş için ayrı GitHub hesaplarım olduğu için aradığım cevap buydu. Sadece Host work.github.com HostName github.com IdentityFile ~/.ssh/workbir çalışma deposunu klonladığımda "github.com" u "work.github.com" ile değiştirmem gerekiyordu. Hala "github.com" a bağlanıyor, fakat varsayılan olmayan bir anahtar çifti kullanıyor.
Mikkel

1
Ayrıntılar için URL (" itblog.study.land / ..." ) artık çalışmıyor :(
Carl Smotricz 15:17

@CarlSmotricz orjinali buraya taşındı: medium.com/@thucnc/…
thucnguyen

4
EN SONUNDA!!! Bu cevap aslında ~/.ssh/configdosyaya koyduklarınızı nasıl kullanabileceğinizi gösterir . Diğer her cevap, orijini eklerken ana bilgisayarı nasıl ayarlayabileceğinizi özlüyor, bu da git'in doğru anahtar dosyasını kullanmasına otomatik olarak izin veriyor. TEŞEKKÜR EDERİM!!
BrianVPS

1
Güzel, aradığım şey buydu :)
Lucas D'Avila

15

Mücadelemden sonra, benim $GIT_SSHiçin işe yarayanları paylaşmak isterim.

Örneklerimde özel anahtarınızın bulunduğunu varsayacağım./home/user/.ssh/jenkins

Kaçınılması gereken hata: GIT_SSH değeri seçenekler içerir

$ export GIT_SSH="ssh -i /home/user/.ssh/jenkins"

ya da benzer bir şey başarısız olursa, git değeri bir dosya olarak yürütmeye çalışacağından . Bu nedenle, bir komut dosyası oluşturmanız gerekir.

$ GIT_SSH betiğinin çalışma örneği /home/user/gssh.sh

Komut aşağıdaki gibi çağrılacaktır:

$ $GIT_SSH [username@]host [-p <port>] <command>

Örnek komut dosyası çalışması şöyle görünebilir:

#!/bin/sh
ssh -i /home/user/.ssh/jenkins $*

$*Sonunda not edin , bunun önemli bir parçası.

Varsayılan yapılandırma dosyanızdaki herhangi bir olası çakışmayı önleyebilecek daha güvenli bir alternatif bile (artı kullanılacak bağlantı noktasından açıkça bahseden):

#!/bin/sh
ssh -i /home/user/.ssh/jenkins -F /dev/null -p 22 $*

Senaryonun içinde olduğunu varsayarsak /home/user/gssh.sh, sonra:

$ export GIT_SSH=/home/user/gssh.sh

ve herkes işe yarayacak.


Teşekkürler. Sadece dikkat: argümanlar boşluklar içerdiğinde eskilerin doğru davrandığından, bağımsız geçişler için $ * yerine "$ @" kullanın.
Piotr Findeisen

@PiotrFindeisen Notunuz için teşekkürler. Ancak, tamamen anlamıyorum - zsh'de dizeleri tek parça halinde tutmama yardımcı oluyor, ancak bash olarak değil. Bana daha fazlasını söyler misin veya bir açıklama yapmayı söyler misin? Ben bazı değişiklikler kör olarak eklemek istemiyorum.
Jan Vlcinsky

Cevabınızın ilk yarısını kaldırmalısınız. Kimse işe yaramayan bir çözümle ilgilenmiyor ve en altta doğru olan cevabı gizleyen, harika bir şekilde çalışan okuma boşa gidiyor.
Cerin

@Cerin "Kaçınılacak hatayı" kaldırmak istiyorsan orada tutacağım. Kaçınılması gereken ortak bir şelaleyi paylaşır ve çok kısadır. Eminim birileri her şeyi değişkene dönüştürerek çözümü optimize etmeye çalışacaktır (bu benim başıma geldi), bu yüzden başarıya giden yolu kısaltmaya çalıştım.
Jan Vlcinsky

5

Kendi paketleyicinizi oluşturmak yerine sadece ssh-ident'ı kullanabilirsiniz.

Daha fazla bilgi için: https://github.com/ccontavalli/ssh-ident

Birden çok oturum açma oturumunda, xterms veya NFS paylaşılan evlerinde bile, ilk kez gerektiğinde istek üzerine ssh anahtarlarını yükler.

Küçük bir config dosyasıyla, yapmanız gerekenlere bağlı olarak farklı anahtarları otomatik olarak yükleyebilir ve farklı ajanlarda (ajan iletimi için) ayrı tutabilir.


5

Ayrı bir github hesabına ihtiyaç duyan bir müşterim vardı. Bu yüzden sadece bu proje için ayrı bir anahtar kullanmam gerekiyordu.

Benim çözümüm bunu .zshrc / .bashrc dosyasına eklemek oldu.

alias infogit="GIT_SSH_COMMAND=\"ssh -i ~/.ssh/id_specialkey\" git $@"

Git ne zaman bu proje için kullanmak isterim "infogit" yerine git:

infogit commit -am "Some message" && infogit push

Benim için hatırlaması daha kolay.


4

Bu yüzden GIT_SSH env değişkenini olarak ayarladım $HOME/bin/git-ssh.

Repo yapılandırmamın desteklenebilmesi için hangi ssh kimliğinin kullanılacağını belirtmek için dosyam ~/bin/git-sshşudur:

#!/bin/sh
ssh -i $(git config --get ssh.identity) -F /dev/null -p 22 $*

Sonra global git config ayarım var:

$ git config --global ssh.identity ~/.ssh/default_id_rsa

Ve herhangi bir git deposunda sadece yerel bir ssh.identitygit config değeri belirleyebilirsiniz:

$ git config --local ssh.identity ~/.ssh/any_other_id_rsa

İşte bu kadar!

Her bir kimlik için farklı bir e-posta adresiniz varsa, daha da kolaylaşır, çünkü anahtarlarınızı yalnızca e-posta adreslerinden sonra adlandırabilir ve sonra git config user.email öğesinin anahtar seçimini şöyle yapmasını sağlayabilirsiniz ~/bin/git-ssh:

#!/bin/sh
ssh -i $HOME/.ssh/$(git config --get user.email) -F /dev/null -p 22 $*

2

Benim çözümüm şuydu:

bir komut dosyası oluşturun:

#!/bin/bash
KEY=dafault_key_to_be_used
PORT=10022 #default port...
for i in $@;do
   case $i in
    --port=*)
        PORT="${i:7}";;
    --key=*)KEY="${i:6}";;
   esac
done
export GIT_SSH_COMMAND="ssh -i $HOME/.ssh/${KEY} -p ${PORT}"
echo Command: $GIT_SSH_COMMAND

sonra var çalışmasını değiştirmeniz gerektiğinde:

. ./thescript.sh [--port=] [--key=]

Ekstra noktayı unutma! Bu komut dosyası ortamları vars ayarlamak yapar! --key ve --port isteğe bağlıdır.


2

Genellikle bunun için kullanmak istersiniz ~/.ssh/config. Sunucu adreslerini, bunlar için kullanmak istediğiniz tuşlarla aşağıdaki şekilde eşleştirin:

Host github.com
  IdentityFile ~/.ssh/id_rsa.github
Host heroku.com
  IdentityFile ~/.ssh/id_rsa.heroku
Host *
  IdentityFile ~/.ssh/id_rsa

Host *herhangi bir sunucuyu belirtir, bu yüzden kullanılacak ~/.ssh/id_rsavarsayılan anahtar olarak ayarlamak için kullanırım.


2

@ Shellholic üzerine inşa ettim ve bu SO ipliği birkaç kez öğrettim. GitHub'u örnek olarak kullanıyorum ve özel bir anahtarınızın olduğunu ~/.ssh/github(aksi halde bu SO konusuna bakın ) ve ortak anahtarı GitHub profilinize eklediğinizi (aksi halde GitHub'ın yardımına bakın) kabul ediyorum .

Gerekirse, adresinde yeni bir SSH config dosyası oluşturun ~/.ssh/configve izinleri 400 olarak değiştirin.

touch ~/.ssh/config
chmod 600 ~/.ssh/config

Bunu ~/.ssh/configdosyaya ekle :

Host github.com
    IdentityFile ~/.ssh/github
    IdentitiesOnly yes

Zaten bir uzaktan kurulumunuz varsa, silmek isteyebilirsiniz, aksi halde yine de kullanıcı adınız ve şifreniz istenebilir:

git remote rm origin

Ardından git deposuna bir uzaktan kumanda ekleyin ve kullanıcı adından önce iki noktaya dikkat edin:

git remote add origin git@github.com:user_name/repo_name.git

Ve sonra git komutları normal çalışıyor, örneğin:

git push origin master
git pull origin 

@HeyWatchBu SO SO iş parçacığında buIdentitiesOnly yes , her protokol için varsayılan dosya adıyla eşleşen kimlik dosyasını gönderme SSH varsayılan davranışını engellemek için eklenmesini önerdi . Daha fazla bilgi ve referanslar için bu konuya bakın.


Bu benim hatamdı: “Eğer zaten bir uzaktan kumandanız varsa ...”. Çok teşekkürler!!!
Allan Andrade,

yaygın hata --- cevap bu
Goddard

1

Sadece kullan ssh-agentve ssh-addkomutları kullan.

# create an agent
ssh-agent

# add your default key
ssh-add ~/.ssh/id_rsa

# add your second key
ssh-add ~/.ssh/<your key name>

Yukarıdaki komutları yürüttükten sonra, her iki tuşu da aynı anda kullanabilirsiniz. Sadece yaz

git clone git@github.com:<yourname>/<your-repo>.git

havuzunuzu klonlamak için.

Makinenizi yeniden başlattıktan sonra yukarıdaki komutu uygulamanız gerekir.


Lütfen nasıl bir acente yaratabileceğimi de içeren süreci açıkla
Srikrushna

0

Git 2.16 sürümünü kullanıyorum ve bir config veya modifiye edilmiş komut için bile tek bir betiğe ihtiyacım yok.

  • Özel anahtarımı .ssh / id_rsa'ya kopyaladım.
  • izinleri 600 olarak ayarla

Git ise otomatik olarak tuşa basıyor. Hiçbir şey sormuyorum ve bir hata atmıyor. Sadece iyi çalışıyor.


Sorunun “ ~/.sshdizinde birden fazla özel anahtara sahip bir sistem” ile ilgili olduğunu fark ettiniz mi?
Scott

0

Soru sorulmasa da, aynı cevabı sadece için çözmek isteyen herkes için bu cevabı .

Gitlab çözümü

yaklaşımını kullanmayı denedim , ancak git belgeleri bile ~/.ssh/configbasit bir durumdan başka bir şey için kullanmanızı önerir . Benim durumumda bir sunucusuna baskı - ve belirli bir kullanıcı olarak bunu yapmak istedim - tabii ki kullanıcı adı değil, sırasında tarafından tanımlanmış . Bir kere uygulandıktan sonra aşağıdakileri yapıyorum:git

~/myrepo> git mycommit -m "Important Stuff"
~/myrepo> git mypush
[proceed to enter passphrase for private key...]

Kurmak

Benim durumumda yerini hatırlayın /myfolder/.ssh/my_gitlab_id_rsa.

Bir giriş ekle ~/.ssh/config:

Host gitlab-delegate
    HostName gitlab.mydomain.com
    User git
    IdentityFile /myfolder/.ssh/my_gitlab_id_rsa
    IdentitiesOnly yes

Ekle içinde ~/.gitconfig:

mypush = "!f() { \
           path=$(git config --get remote.origin.url | cut -d':' -f2); \
           branch=$(git rev-parse --abbrev-ref HEAD); \
           git remote add gitlab_as_me git@gitlab-delegate:$path && \
           git push gitlab_as_me $branch && \
           git pull origin $branch; \
           git remote remove gitlab_as_me; \
         }; f"

Bonus olarak, bu ile belirli bir kullanıcı olarak aynı hostta taahhütlerimi yerine :

mycommit = "!f() { \
             git -c "user.name=myname" -c "user.email=myname@mysite.com" commit \"$@\"; \
           }; f"

açıklama

Yukarıdakilerin tümü, ilgili uzaktan kumandanın originve ilgili şubenin şu anda kontrol edildiğini varsayar . Başvuru için ele alınması gereken birkaç maddeyle karşılaştım:

  • Çözüm, yeni bir uzaktan kumanda gerektiriyor gitlab_as_meve günlük ağacımda fazladan bir uzaktan kumandayı görmek istemedim, bu yüzden bittiğinde onu kaldırdım.
  • Uzaktan kumandayı oluşturmak için kumandanın url'sini anında oluşturma ihtiyacı vardır - gitlab durumunda bu basit bir bash
  • gitlab_as_meSize bir itme işlemi yaparken, hangi dalı bastığınız konusunda spesifik olmanız gerekir
  • İtme işleminden sonra yerel originişaretçinizin eşleşmesi için "güncellenmesi" gerekir gitlab_as_me(bunu git pull origin $branchyapar)

0

Birden fazla git hesabınız varsa ve farklı bir ssh anahtarı istiyorsanız,

Ssh anahtarını oluşturmak için aynı adımı uygulamanız gerekir, ancak emin olun

ssh-keygen -t ed25519 -C "your-email-id@gmail.com" 

Kaydetmek istediğiniz yolu girin (Ör: my-pc / Desktop / .ssh / ed25519)

Genel anahtarı gitlab'a ekle (gitlab'a ssh anahtarı nasıl eklenir )

Aşağıdaki komutu kullanarak yeni ssh kimliğine sahip olmanız gerekir.

ssh-add ~/my-pc/Desktop/.ssh/ed25519

(1) Birinden veya başka bir şeyden alıntı mı yapıyorsunuz? Eğer öyleyse, lütfen kaynağı tanımlayın. Değilse, lütfen teklif biçimlendirmesini kullanmayın. (2) “ed25519” nedir? ……………………………… Yorumlarda cevap vermeyin;  cevabınızı daha net ve daha eksiksiz hale getirmek için düzenleyin .
Scott

0
    # start :: how-to use different ssh identity files

    # create the company identity file
    ssh-keygen -t rsa -b 4096 -C "first.last@corp.com"
    # save private key to ~/.ssh/id_rsa.corp, 
    cat ~/.ssh/id_rsa.corp.pub # copy paste this string into your corp web ui security ssh keys

    # create your private identify file
    ssh-keygen -t rsa -b 4096 -C "me@gmail.com"
    # save private key to ~/.ssh/id_rsa.me, note the public key ~/.ssh/id_rsa.me.pub
    cat ~/.ssh/id_rsa.me.pub # copy paste this one into your githubs, private keys

    # clone company internal repo as follows
    GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.corp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
    git clone git@git.in.corp.com:corp/project.git

    export git_msg="my commit msg with my corporate identity, explicitly provide author"
    git add --all ; git commit -m "$git_msg" --author "MeFirst MeLast <first.last@corp.com>"
    GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.corp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
    git push 
    # and verify 
    clear ; git log --pretty --format='%h %ae %<(15)%an ::: %s

    # clone public repo as follows
    GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.corp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
    git clone git@github.com:acoolprojectowner/coolproject.git

    export git_msg="my commit msg with my personal identity, again author "
    git add --all ; git commit -m "$git_msg" --author "MeFirst MeLast <first.last@gmail.com>"
    GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.me -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
    git push ; 
    # and verify 
    clear ; git log --pretty --format='%h %ae %<(15)%an ::: %s

    # stop :: how-to use different ssh identity files
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.