Siapa pun yang memilih untuk "menutup", pertanyaan ini - secara langsung terkait dengan pemrograman karena alasan yang sama, pertanyaan tentang GIT diizinkan di sini
James Raitsev
1
Bisa dibilang ... Ini benar-benar pertanyaan pengguna super, masalahnya di sini bukanlah git, tetapi platform tempat menjalankannya. Anda tidak dapat memeriksa masalah di "in git", karena git tidak peduli, ini hanya berhubungan dengan cara Anda menggunakan ssh dan bagaimana konfigurasinya. Apakah Anda menggunakan ssh-agent, semua jenis sistem manajemen kunci, sistem operasi apa yang Anda gunakan, versi apa, dan sebagainya?
Arafangion
Jawaban:
68
Entri berikut dalam .ssh/configfile memecahkan masalah
host git.assembla.com
user git
identityfile ~/.ssh/whatever
Di mana ~/.ssh/whateverjalur ke kunci pribadi Anda
Selain itu, pengguna dan host dapat diambil dari
git push [email protected]:repo_name.git
^__ ^_______________
user host
jadi jika saya ingin menggunakan kunci ssh lain untuk host yang berbeda, apakah saya akan mengulangi hal yang sama setelah yang pertama ?? Apakah identityfile berkaitan dengan host pertama sebelumnya?
Mengeksekusi ssh dalam mode verbose, alias ssh -v user@host, akan mencetak banyak sekali info debugging, yang juga berisi detail keyfiles mana yang dicoba untuk login.
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/user/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 332
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).
Anda juga dapat menggrep output kesalahan standar dari perintah ssh untuk menemukan file kunci seperti ini: ssh -vv user@host 2> >(grep Offering)- ini akan mempermudah. File terakhir harus berupa kunci publik. Contoh:debug1: Offering RSA public key: /Users/macbookpro/.ssh/id_rsa
Gianfranco P.
3
githubtidak sama dengan git.
ForeverWintr
9
Kecuali ditentukan di .ssh/configdalamnya , itu akan menggunakan file kunci pribadi default.
File default adalah ~/.ssh/id_rsaatau ~/.ssh/id_dsaatau ~/.ssh/identitytergantung pada versi protokol.
Menurut saya yang paling praktis menurut selera saya adalah:
GIT_SSH_COMMAND='ssh -v' git …
tentu saja, tergantung pada keadaan, mungkin bermanfaat untuk mengekspornya ke lingkungan SHELL saat ini sehingga Anda tidak perlu menambahkannya secara manual setiap kali. Maka akan menjadi seperti ini:
export GIT_SSH_COMMAND='ssh -v'
git …
- Seperti yang man gitdisarankan, ada beberapa variabel lingkungan yang akan mempengaruhi operasi Git dengan penggunaan SSH. Menurut man sshAnda bisa mendapatkan beberapa info debugging saat menerapkan -vopsi (tidak hanya tetapi juga, lihat manual jika Anda penasaran lebih lanjut).
kunci mana yang digunakan?
Dalam keluaran, Anda akan melihat sesuatu seperti…
IYA. Ini harus menjadi jawaban yang diterima. Untuk membuatnya bekerja pada jendela CMD (ugh), gunakan: set GIT_SSH_COMMAND=ssh -v. Ini membantu saya mengetahui bahwa ssh-config Inlcude-Path harus seperti ini di windows: Include /C/Users/YourUserName.ssh/configuntuk membuat ssh dan dengan demikian git menggunakan file config yang kemudian menggunakan misalnya HOST *entri untuk menentukan file identitas yang digunakan git / ssh.
Eserasatau
5
Karena githanya digunakan sshuntuk terhubung, itu akan menggunakan kunci mana pun yang sshakan digunakan untuk terhubung ke host jarak jauh. Lihat ~/.ssh/configfile untuk detailnya; yang hostblok menggunakan IdentityFiledirektif untuk menentukan kunci pribadi untuk digunakan. Halaman ssh_config(5)manual berisi detail lengkap.
Hmm .. file tersebut tidak ada di sistem saya. Haruskah itu?
James Raitsev
1
@JAM OS apa yang Anda gunakan? Selain itu, terkadang file konfigurasi ada di/etc/ssh/ssh_config
Saya menggunakan MACOS. Ditemukan /etc/ssh_configyang tampaknya merupakan file yang penuh dengan entri komentar
James Raitsev
@sarnold Anda dapat membuat ~/.ssh/configsendiri.
xdazz
4
Ini mungkin super edge, tetapi setelah menjalankannya ssh -vT [email protected]menunjukkan kepada saya bahwa ia sedang memeriksa /root/.sshkunci, saya mengharapkannya untuk memeriksa direktori home saya dan kemudian saya menyadari bahwa saya masuk sebagai root!
Jawaban:
Entri berikut dalam
.ssh/config
file memecahkan masalahDi mana
~/.ssh/whatever
jalur ke kunci pribadi AndaSelain itu, pengguna dan host dapat diambil dari
sumber
Mengeksekusi ssh dalam mode verbose, alias
ssh -v user@host
, akan mencetak banyak sekali info debugging, yang juga berisi detail keyfiles mana yang dicoba untuk login.Sekarang jika Anda menggabungkan ini, dengan Langkah 4 di halaman bantuan SSH milik Git ,
ssh -vT [email protected]
dapat memberikan jawabannya.Catatan: Anda juga dapat menggunakan
-i
sakelar untuk memberi tahu ssh selama eksekusi perintah, keyfile mana yang akan digunakan.sumber
ssh -vv user@host 2> >(grep Offering)
- ini akan mempermudah. File terakhir harus berupa kunci publik. Contoh:debug1: Offering RSA public key: /Users/macbookpro/.ssh/id_rsa
github
tidak sama dengangit
.Kecuali ditentukan di
.ssh/config
dalamnya , itu akan menggunakan file kunci pribadi default.File default adalah
~/.ssh/id_rsa
atau~/.ssh/id_dsa
atau~/.ssh/identity
tergantung pada versi protokol.sumber
Menurut saya yang paling praktis menurut selera saya adalah:
tentu saja, tergantung pada keadaan, mungkin bermanfaat untuk mengekspornya ke lingkungan SHELL saat ini sehingga Anda tidak perlu menambahkannya secara manual setiap kali. Maka akan menjadi seperti ini:
- Seperti yang
man git
disarankan, ada beberapa variabel lingkungan yang akan mempengaruhi operasi Git dengan penggunaan SSH. Menurutman ssh
Anda bisa mendapatkan beberapa info debugging saat menerapkan-v
opsi (tidak hanya tetapi juga, lihat manual jika Anda penasaran lebih lanjut).Dalam keluaran, Anda akan melihat sesuatu seperti…
… Yang merupakan jawaban atas qn Anda.
sumber
set GIT_SSH_COMMAND=ssh -v
. Ini membantu saya mengetahui bahwa ssh-config Inlcude-Path harus seperti ini di windows:Include /C/Users/YourUserName.ssh/config
untuk membuat ssh dan dengan demikian git menggunakan file config yang kemudian menggunakan misalnyaHOST *
entri untuk menentukan file identitas yang digunakan git / ssh.Karena
git
hanya digunakanssh
untuk terhubung, itu akan menggunakan kunci mana pun yangssh
akan digunakan untuk terhubung ke host jarak jauh. Lihat~/.ssh/config
file untuk detailnya; yanghost
blok menggunakanIdentityFile
direktif untuk menentukan kunci pribadi untuk digunakan. Halamanssh_config(5)
manual berisi detail lengkap.sumber
/etc/ssh/ssh_config
/etc/ssh_config
yang tampaknya merupakan file yang penuh dengan entri komentar~/.ssh/config
sendiri.Ini mungkin super edge, tetapi setelah menjalankannya
ssh -vT [email protected]
menunjukkan kepada saya bahwa ia sedang memeriksa/root/.ssh
kunci, saya mengharapkannya untuk memeriksa direktori home saya dan kemudian saya menyadari bahwa saya masuk sebagai root!sumber
ssh
cara interogasi yang sama, merupakan solusi yang tepat. Terima kasih.Di server jarak jauh, edit file sshd_config dan ubah LogLevel dari INFO ke VERBOSE dan mulai ulang ssh.
Sekarang file log Anda akan menyimpan sidik jari dari kunci yang digunakan untuk mengotentikasi setiap pengguna.
Di Ubuntu, file-file ini adalah:
tetapi mereka mungkin berbeda di distro lain. Hanya google untuk lokasinya (beberapa menggunakan / var / log / aman misalnya).
sumber