Скажімо, ваш .sshкаталог містить 30 ключів (15 приватних та 15 загальнодоступних).
Де в Git можна перевірити, який із них використовується для підключення до даного віддаленого сховища?
Скажімо, ваш .sshкаталог містить 30 ключів (15 приватних та 15 загальнодоступних).
Де в Git можна перевірити, який із них використовується для підключення до даного віддаленого сховища?
Відповіді:
Наступний запис у .ssh/configфайлі вирішує проблему
host git.assembla.com
user git
identityfile ~/.ssh/whatever
Де ~/.ssh/whateverшлях до вашого приватного ключа
Крім того, користувача та хоста можна вибрати у
git push git@git.assembla.com:repo_name.git
^__ ^_______________
user host
Виконуючи ssh у багатослівному режимі, він також ssh -v user@hostнадрукує величезну кількість інформації про налагодження, яка також містить деталі щодо ключових файлів, які він намагається ввійти.
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).
Тепер , якщо ви поєднуєте це з кроком 4 у власній Git і SSH сторінці довідки , ssh -vT git@github.comможе дати вам відповідь.
Примітка: Ви також можете використовувати -iперемикач, щоб повідомити ssh під час виконання команди, який файл ключів використовувати.
ssh -vv user@host 2> >(grep Offering)- це полегшить роботу. Останній файл повинен бути відкритим ключем. Наприклад:debug1: Offering RSA public key: /Users/macbookpro/.ssh/id_rsa
githubце не те саме, що git.
Якщо це не вказано в .ssh/configньому, використовуватиметься файл приватного ключа за замовчуванням.
Файл за замовчуванням ~/.ssh/id_rsaабо ~/.ssh/id_dsaабо в ~/.ssh/identityзалежності від версії протоколу.
Я б сказав, що найбільш практичним на мій смак буде:
GIT_SSH_COMMAND='ssh -v' git …
звичайно, залежно від обставин може бути корисно просто експортувати його до поточного середовища SHELL, щоб вам не довелося щоразу додавати його вручну. Тоді це було б так:
export GIT_SSH_COMMAND='ssh -v'
git …
- Як можна man gitприпустити, існує кілька змінних середовища, які можуть вплинути на діяльність Git із використанням SSH. Відповідно до man sshви можете отримати деяку інформацію про налагодження під час розгортання -vваріанту (не тільки, але також, перегляньте посібник, якщо вам цікаво більше).
який ключ використовується?
На виході ви побачите щось подібне…
debug1: Offering public key: …
... що є відповіддю на ваш qn.
set GIT_SSH_COMMAND=ssh -v. Це допомогло мені зрозуміти, що ssh-config Inlcude-Path має бути приблизно таким у вікнах: Include /C/Users/YourUserName.ssh/configдля створення ssh і, отже, git використовуйте конфігураційний файл, який потім використовує, наприклад, HOST *запис, щоб вказати файл ідентифікації, який використовує git / ssh.
Оскільки gitпросто використовує sshдля підключення, він буде використовувати будь-який ключ, який sshби використовувався для підключення до віддаленого хосту. Детальніше див. У ~/.ssh/configфайлі; hostблок використовує IdentityFileдирективу , щоб вказати закритий ключ для використання. Ця сторінка ssh_config(5)містить повну інформацію.
/etc/ssh/ssh_config
/etc/ssh_configщо видається файлом, повним коментованих записів
~/.ssh/configсебе.
Це може бути супер перевагою, але після запуску ssh -vT git@github.comвін показав мені, що він перевіряє /root/.sshнаявність ключів, я очікував, що він перевірить мій домашній каталог, а потім зрозумів, що ввійшов у систему як root!
sshспосіб допиту - це правильні рішення. Дякую.
На віддаленому сервері відредагуйте файл sshd_config і змініть LogLevel з INFO на VERBOSE та перезапустіть ssh.
Тепер ваш файл журналу буде містити відбиток ключа, який використовувався для автентифікації кожного користувача.
У Ubuntu ці файли:
/etc/ssh/sshd_config
/var/log/auth.log
але вони можуть відрізнятися в іншому дистрибутиві. Просто погугліть для їх розташування (наприклад, деякі використовують / var / log / secure).