Черепаха запитує пароль


84

Я тільки почав працювати над Git. Я використовую Windows 7 і встановив msysgit (1.7.8) та Tortoisegit (1.7.6). Сховище створюється на сервері Linux, який доступний через локальну мережу. Проблема, з якою я стикаюся, полягає в тому, що я не можу клонувати сховище за допомогою Tortoisegit, він запитує пароль, і я не впевнений, який пароль він запитує. Одночасно я міг клонувати сховище за допомогою Git Gui і робити всі операції. Хто-небудь може допомогти мені зрозуміти, чому Tortoisegit запитує пароль, коли Git Gui цього не робить. Я спробував видалити Git і Tortoisegit, а потім встановити знову, але успіху не було.

Помилка черепахи


ваш git-сервер використовує Pubkey auth?
Фелікс Ян

Що робить TortoiseGit і що робить графічний інтерфейс Git на ТАКОМ же клоні репо?
manojlds

2
Клацнувши правою кнопкою миші для Tortoise Git, натисніть Налаштування. У Git є посилання -> Remote, клацніть на ньому. З віддаленого списку клацніть походження. Справа ви побачите URL. Замість вашого імені користувача за URL-адресою wright, що: username: <ваш пароль>. Нарешті, коли ви зробите операцію git від Tortoise Git, ви побачите, що вона ніколи не запитує вас про пароль.
kamaci

1
Ви використовуєте http-URI замість SSH? Це була моя проблема
хлопець із САПР

Для "спеціальних" серед нас (включаючи мене) не забудьте видалити біт 'git clone' з передньої частини команди, перш ніж вставити його у вікно URL-адреси вікна Tortoise Git Clone - інакше у вас виникають подібні проблеми
icc97

Відповіді:


131

Мій колега вирішив проблему. Кроки:

  1. Клацніть правою кнопкою миші -> TortoiseGit -> Налаштування -> Мережа
  2. Клієнт SSH вказував на C:\Program Files\TortoiseGit\bin\TortoisePlink.exe
  3. Змінено шлях до C:\Program Files (x86)\Git\bin\ssh.exe

Альтернативний шлях: C:\Users\...\AppData\Local\Programs\Git\usr\bin\ssh.exe


це працює у мене з черепаховою версією 1.8.3 ... ця проблема збила мене з розуму !! на WindowsXP @ 32-бітна tortoisegit працює лише з c: \ programmi \ git \ bin \ ssh.exe на Windows7 @ 64 вона добре працює з toirtoiseplink.exe (за замовчуванням)
Evilripper

На моїй машині Windows 8 вказівка ​​клієнта SSH на файл msysGit ssh.exe спрацював, коли запит на пароль взагалі не відображався. Інша проблема, але це рішення, безумовно, варто спробувати тим, хто стикається з проблемами ssh з TortoiseGit
Icermann

1
Для мене це не допомогло (принаймні, підключаючись до GitHub, я не пробував інші сховища).
Сума 02

2
Дякую, працювали чудово. Хоча моя ssh.exeбрехня в моєму каталозі користувачівC:\Users\...\AppData\Local\Programs\Git\usr\bin
ppasler

7
Як згадував @ppasler, ssh.exe тепер знаходиться в папці C: \ Program Files (x86) \ Git \ usr \ bin \ ssh.exe або розташуванні, яке він згадав, залежно від інсталяції.
Влад Шнаковські

33

Якщо вам потрібно використовувати ім’я користувача / пароль, є набагато простіше рішення, ніж поточна відповідь №2:

Right-click --> Tortoise Git --> Settings --> Git --> Credential --> Choose "Wincred, all Windows users" --> Hit apply

Наступного разу, коли ви введете пароль для репо, цей пароль буде автоматично збережено.


Якщо ви використовуєте сховище, яке потребує ключів SSH, а не ім’я користувача / пароль (що, схоже, було початковою проблемою OP) , вам потрібно

  1. Відкрийте ключ SSH у PuTTY gen (встановлюється разом з Tortoise Git)
  2. У PuTTY gen збережіть ключ як ключ PuTTY.
  3. У сховищі, Right-click --> Tortoise Git --> Settings --> Git --> Remotes. Знайдіть свій пульт дистанційного керування (як правило, "джерело"), а потім завантажте ключ PuTTY з кроку 2.

У моєму випадку це працює лише при використанні імені користувача. Це не працює, коли ви вводите електронну адресу користувачів, тому майте це на увазі.
Razze

3
це була найкоротша і чітка відповідь, дякую.
Alphas Supremum

Шукав вічно цю точну відповідь!
NielW

23

Робити це без ключів ...

Клацніть правою кнопкою миші на вашій папці
Виберіть tortoiseGit-> налаштування-> Git-> Віддалений
вибір джерела (або те, що ви позначили як головний пульт)

Під URL використовуйте цей формат.

Https: // ІМЯ КОРИСТУВАЧА: ПАРОЛЬ @ URL

Де USERNAME - ваше ім’я користувача
: двокрапка розділяє ім’я користувача та пароль і має бути там
ПАРОЛЬ - це ваш пароль
@ розділяє облікові дані за допомогою URL-
адреси URL- адреса - це URL-адреса, яку ви використовували б для підключення до ресурсу .git

Подяка надходить Kamaci


3
Це рішення також працює з ключем. Клон Https: // USERNAME @ URL і ви прекрасно.
Orace

2
Так, за винятком не робіть цього, тому що під час злиття TortoiseGit схильний поміщати всю URL-адресу в повідомлення коміту!
mwardm

Це ідеальне рішення. Але чи є спосіб приховати пароль, оскільки він є простим текстом.
Аміт Кумар,

1
Що робити, якщо пароль містить знак @?
Хаммад Дар

Я вдався до використання цієї відповіді, оскільки у мене є mingw64, і я отримую цей журнал: Пропускаючи командний рядок '"C: \ Program Files \ Git \ mingw64 \ bin \ .. \ usr \ bin \ bash.exe"' ('C: \ Program Files \ Git \ mingw64 \ bin \ .. \ usr \ bin \ bash.exe 'не знайдено) Потрібен дійсний командний рядок; Відповідно відредагуйте рядкові ресурси (3x) помилка: не вдалося виконати скрипт підказки (код виходу 1)
RW4,

14

Збереження імені користувача та пароля за допомогою TortoiseGit

Зберегти свої дані для входу в TortoiseGit досить просто. Заощаджує необхідність вводити своє ім’я користувача та пароль кожного разу, коли ви робите витягування або натискання.

  1. Створіть файл із назвою _netrc із таким вмістом:

    машина github.com
    логін ваш логін
    пароль ваш пароль

  2. Скопіюйте файл у папку C: \ Users \ (або в інше місце; це якраз там, де я його помістив)

  3. Перейдіть до командного рядка, введіть setx home C: \ Users \

Примітка: якщо ви використовуєте щось раніше, ніж Windows 7, команда setx може не працювати для вас. Використовуйте замість цього і додайте змінну домашнього середовища до Windows за допомогою додаткових налаштувань у розділі Мій комп’ютер.

КРЕДИТ: http://www.munsplace.com/blog/2012/07/27/saving-username-and-password-with-tortoisegit/


1
це працює просто приємно, але чи є спосіб зашифрувати звичайний пароль? Мені було незручно зберігати свій пароль github у текстовому файлі.
Dio Phung,

@DioPhung Подумай про те, що ти щойно сказав. Якщо пароль зашифрований, вам тепер потрібно буде запам'ятати (новий) пароль для використання пароля. Якщо вам не потрібно запам'ятовувати пароль, тоді це так само добре, як відсутність пароля (з точки зору локальної загрози). Або ви хочете зручності або безпеки.
Каміло Мартін

1
@DioPhung Якщо ви боїтесь місцевих адміністраторів, вони можуть легко встановити кейлоггер. Місцевий адміністратор може робити з вашими даними все, що завгодно, і як такий, будь-який захист від них буде захистом через затемнення (навіть інструменти та прийоми, які банки використовують, не можуть захистити вас від обізнаного та рішучого місцевого адміністратора, і вони дуже старайся). Щодо хешу, що ви маєте на увазі? Хеш не є оборотним. І якщо ви шифруєте за допомогою самого пароля, вам все одно доведеться його вводити щоразу ... Отже, це те саме, що не шифрувати його спочатку.
Каміло Мартін

1
Для шифрування @CamiloMartin не потрібен пароль; Є багато способів автентифікації за допомогою системи, яка може бути зручнішою за пароль. Безпека - це не все чи взагалі.
Адам

1
Хоча це рішення можливо, краще зберігати пароль у Windows PasswordVault . Ця можливість була доступна в TortoiseGit з березня 2013 року шляхом реалізації API git-credential-store . Це, мабуть, теж простіше: From within repo → Context-click → TortoiseGit → Settings → Git → Credential → wincred → OKі все готово. Я написав повну відповідь на це питання для зацікавлених.
Адам

5

Один із способів це зробити

  • згенерувати пару ключів за допомогою PuttyGen (або імпортувати в .ppk, якщо ключ уже є)
  • завантажте приватний ключ до peagent
  • імпортувати відкритий ключ до вашого сервера gitosis (надайте свій відкритий ключ своєму адміністратору)
  • а потім використовувати plink як SSH-клієнт

plink працює спочатку з peagent для отримання завантаженого ключа.

ви можете знайти plink.exe разом із горохом та іншими смакотами у стандартному розподілі шпаклівки

щоб використовувати його, перейдіть до:

Налаштування TortoiseGit -> Мережа -> SSH-клієнт.

за замовчуванням він містить шлях до TortoisePlink.exe, замість цього дає шлях до plink.exe

Крім того, ви можете використовувати ssh (.exe) у розподілі msys (git), але тоді ви не можете використовувати закритий ключ у форматі .ppk / комбінація Peagent. Вам потрібно експортувати ключ у формат OpenSSH через PuttyGen, або створити пару ключів, використовуючи ssh-keygen.


Що ви маєте на увазі під "клієнтом SSH замість точки TortoisePlink, щоб вказувати"? Де, ймовірно, знаходиться ця програма SSH?
Mikaël Mayer

вибачте за відсутність пунктуації, я думаю, що це спричиняє плутанину. Я оновив відповідь
mzzzzb

Не потрібно нічого змінювати в налаштуваннях. Просто надайте приватний ключ Putty, коли ви клонуєте репо через SSH, і все готово. Не забудьте ввести кінцеву точку SSH у вікні клонування, а НЕ https.
MoonStom

4

Для автоматизації автентифікації використовуйте:

  1. SSH-ключі, як вже вказували інші, або
  2. вбудований помічник облікових даних.

Очевидно, не зберігайте свій пароль у текстовому файлі, якщо репо не важливе.

TortoiseGit> 1.8.1 встановлює помічник git-credential-winstore, який надає локальний API для доступу та збереження вашої реєстраційної інформації у існуючому локальному сховищі облікових даних Windows .

Ви можете переглянути збережені облікові дані, перейшовши до Панелі керування → Облікові записи користувачів → Менеджер облікових даних та вибравши “Повноваження Windows”. Записи, що починаються з "git:", надходять з git-credential-winstore.

Ви можете налаштувати wincred для кожного сховища, виконавши:

(Графічний інтерфейс)

  1. Перейдіть до сховища у Провіднику файлів.
  2. Клацніть на контекстному меню → TortoiseGit → Налаштування → Git → Повноваження
  3. Помічник з облікових даних: wincred - це лише сховище
  4. Наступного разу, коли ви пройдете аутентифікацію за допомогою репо, облікові дані будуть збережені.

(CLI, POSH)

  1. cmdkey /add:git:https://USERNAME@github.com /user:USERNAME /pass:PASSWORD
  2.  

    @"
    [credential]
            helper = wincred
    "@ | Out-File -FilePath $repoRoot\.git\config -Append
    

Ви можете перерахувати всі облікові дані, що зберігаються для репозиторіїв, cmdkey /list:git:*
після збереження паролі не відображаються cmdkey ( http://ss64.com/nt/cmdkey.html )

Щоб перерахувати всі облікові дані з паролями, вам потрібно використовувати API Windows . Для PowerShell є CredMan :

. .\CredMan.ps1
.\CredMan.ps1 -ShoCred

4

У мене була та сама проблема. Моє середовище - це Windows 10 з TortoiseGit 2.3.0.0 та git версії 2.11.0.windows.1

Наступне вирішило мою проблему:

  • Клацніть правою кнопкою миші -> TortoiseGit -> Налаштування -> Мережа
  • Оновіть клієнт SSH до C: \ Program Files \ Git \ usr \ bin \ ssh.exe

введіть тут опис зображення


3

URL-адреса та назва вікна TortoisePlink вказують на те, що черепаха намагається використовувати ssh як транспортний протокол. git підтримує більше одного транспортного протоколу, включаючи доступ до файлової системи та доступ до ssh. У своєму запитанні ви описуєте, що хочете отримати доступ до віддаленого репо за допомогою доступу до файлової системи. У цьому випадку ваша віддалена URL-адреса повинна виглядати приблизно так file://server/path/to/repo. Перевірте свою віддалену URL-адресу репозитарію ще раз.


3

Що я зробив, щоб це виправити (windows):

  1. Відкрийте PuttyGen, імпортуйте мій ключ ssh і перетворіть його в ключ шпаклівки, збережіть як загальнодоступні, так і приватні частини в папці .ssh (% userprofile% .ssh)
  2. Відкрийте Putty та перейдіть до Connection-> SSH-> Auth, а потім встановіть там файл приватного ключа.
  3. Поверніться до Сеансу, виберіть Параметри за замовчуванням і натисніть Зберегти.
  4. Тепер спробуйте клонувати ще раз, і вас попросять ввести парольну фразу на вашій клавіші ssh, введіть її, і вона повинна працювати.

2

Відповідь Pramodtech перестав працювати для мене з поточною версією офіційного клієнта Windows Git. Він зберігає виконуваний файл ssh Git\usr\binзамістьGit\bin тепер (з версії 2.5, випущеної в серпні 2015 року).

Тож перейдіть TortoiseGit > Settings > Networkі змініть шлях клієнта SSH на:

C:\Program Files\Git\usr\bin\ssh.exe (або яким би не був шлях до вашої інсталяції Git)

введіть тут опис зображення


1

На жаль, на моїй машині з Windows 8 рішення з переназначенням клієнта SSH не працювало. Рішення, яке вирішило проблему для мене, знаходиться тут: http://www.munsplace.com/blog/2012/07/27/saving-username-and-password-with-tortoisegit/


Будь ласка, просто не публікуйте посилання, додайте якийсь контекст: meta.stackexchange.com/questions/8231/…
icc97

Це та сама відповідь, яку Ентоні Кін дав вище.
rakensi

1

Оскільки жодне з запропонованих тут рішень не працювало для мене, і після багатьох розчарувань рішеннями, які я знайшов в Інтернеті, нарешті мені вдалося це виправити на своїй машині.

Я не знаю, коли і як я налаштував свою шпаклівку TortoiseGit завжди використовувати один конкретний ключ, і, звичайно, це створювало всі проблеми, коли я намагався підключитися до іншого сервера за допомогою нової пари ключів.

Отже, як виправити проблему та як визначити, чи насправді у вас така сама проблема, як у мене:

  1. Завантажте plink.exeна свою машину звідси
  2. Відкрийте командний рядок Windows у тому ж каталозі, куди ви завантажили plink.exe
  3. Виконайте цю команду: plink -v <path_to_your_git_clone_repo_link>
  4. Подивіться на результат і подивіться, чи є у вас рядок типу Reading private key file "C:\Path\To\Some\privateKey.ppk"
  5. Якщо ви бачите такий рядок, і це не файл ключа шпаклівки, який ви хочете використовувати, просто перейдіть та перейменуйте / видаліть / перемістіть цей файл, щоб plink не міг завантажити його наступного разу
  6. Після того, як ви перейменували проблемний файл, він повинен працювати так, як очікувалося, якщо ви запустите команду з пункту 3. ви побачите, що plink тепер не може завантажити цей ppkфайл, і після цього він повинен вивести щось на зразок, Pageant is running. Requesting keys.і ми насправді хотіли цього

Це все, якщо хтось знає, як я можу відключити цей "глобальний ключ за замовчуванням", будь ласка, повідомте мене в коментарях, і я оновлю цю відповідь інформацією.


1

Будь ласка, не URL-адреса віддаленого джерела репо може спричинити цю проблему. У мене було старе репо, яке працювало чудово, і нове, яке я щойно клонував, з проханням ввести пароль.

Порівнявши інформацію, Settings > Git > Remote > Urlя побачив, що той, що працював, мав:

git@github.com:githubAccount/repoName.git

Новий, який не працював, мав https адреса.

Будь ласка, перегляньте скріншот нижче.

введіть тут опис зображення


1

Командний рядок Tortoise GIT DOS перестав запитувати мій пароль, коли я розмістив приватний та відкритий ключі в папці C: \ Users \ .ssh. Я працюю на Windows 7.


1

Була та сама проблема. У моєму випадку не було пароля, який я міг би там ввести. З'єднання було налаштовано як SSH, але не було визначено ключів для репо.

Перевірте: конфігурація TortoiseGIT SSH . Ці інструкції стосуються Cloudforge, але для інших служб ви повинні зробити те саме, просто надайте свій відкритий ключ своєму постачальнику сховищ git.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.