Katakanlah .ssh
direktori Anda berisi 30 kunci (15 pribadi dan 15 publik).
Di mana di Git seseorang dapat memeriksa yang mana yang digunakan untuk terhubung ke repositori jarak jauh tertentu?
Katakanlah .ssh
direktori Anda berisi 30 kunci (15 pribadi dan 15 publik).
Di mana di Git seseorang dapat memeriksa yang mana yang digunakan untuk terhubung ke repositori jarak jauh tertentu?
Jawaban:
Entri berikut dalam .ssh/config
file memecahkan masalah
host git.assembla.com
user git
identityfile ~/.ssh/whatever
Di mana ~/.ssh/whatever
jalur ke kunci pribadi Anda
Selain itu, pengguna dan host dapat diambil dari
git push git@git.assembla.com:repo_name.git
^__ ^_______________
user host
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).
Sekarang jika Anda menggabungkan ini, dengan Langkah 4 di halaman bantuan SSH milik Git , ssh -vT git@github.com
dapat memberikan jawabannya.
Catatan: Anda juga dapat menggunakan -i
sakelar untuk memberi tahu ssh selama eksekusi perintah, keyfile mana yang akan digunakan.
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 dengan git
.
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.
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 git
disarankan, ada beberapa variabel lingkungan yang akan mempengaruhi operasi Git dengan penggunaan SSH. Menurut man ssh
Anda bisa mendapatkan beberapa info debugging saat menerapkan -v
opsi (tidak hanya tetapi juga, lihat manual jika Anda penasaran lebih lanjut).
kunci mana yang digunakan?
Dalam keluaran, Anda akan melihat sesuatu seperti…
debug1: Offering public key: …
… Yang merupakan jawaban atas qn Anda.
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 misalnya HOST *
entri untuk menentukan file identitas yang digunakan git / ssh.
Karena git
hanya digunakan ssh
untuk terhubung, itu akan menggunakan kunci mana pun yang ssh
akan digunakan untuk terhubung ke host jarak jauh. Lihat ~/.ssh/config
file untuk detailnya; yang host
blok menggunakan IdentityFile
direktif untuk menentukan kunci pribadi untuk digunakan. Halaman ssh_config(5)
manual berisi detail lengkap.
/etc/ssh_config
yang tampaknya merupakan file yang penuh dengan entri komentar
~/.ssh/config
sendiri.
Ini mungkin super edge, tetapi setelah menjalankannya ssh -vT git@github.com
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!
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:
/etc/ssh/sshd_config
/var/log/auth.log
tetapi mereka mungkin berbeda di distro lain. Hanya google untuk lokasinya (beberapa menggunakan / var / log / aman misalnya).