2014-01-24 21 views
2

В вопросе устранения неполадок моего вопроса other я предположил, что по какой-то причине закрытый ключ по умолчанию не используется.ssh из сеанса ssh, не используя правильный закрытый ключ ssh

На сервере C: \ Users \ Administrator.ssh \ Config содержит:

Host bitbucket.org 
IdentityFile ~/.ssh/id_rsa.ppk 

Я использую палить для управления ключами SSH при входе в систему Выполнение команд Git работает просто отлично, когда. Я нахожусь на компьютере, зарегистрированном как Администратор. Другой пример: plink -T [email protected] работает нормально.

Однако при входе в систему через PuTTY выполнение команд git завершается с ошибкой, а также plink -T [email protected]. Однако, когда я указываю закрытый ключ с plink: plink -T -i C:\Users\Administrator\id_rsa.ppk [email protected], он работает.

% userprofile% правильно, когда я вхожу в PuTTY, имя пользователя и пароль моего ноутбука точно такие же. Что заставляет ssh не собирать и использовать файл ppk, указанный в конфиге? Моя переменная сеанса GIT_SSH также устанавливается в файл plink.exe как при локальном входе в систему, так и при входе в систему через PuTTY. Добавление к разочарованию заключается в том, что я не могу указать файл ppk при выдаче команд git.

ОБНОВЛЕНИЕ: Как указано в ответе на комментарий ниже, основной проблемой является то, что pageant.exe не используется для отправки ключа на сервер, к которому я пытаюсь подключиться. При входе в локальную сцену начинаются только штрафы, но не при входе в систему через PuTTY. Я также прочитал «переадресацию агента пользователя» в PuTTY, но это, похоже, не помогло. Может быть, freeSSHd не поддерживает его? Если бы это произошло, это бы даже изменило ситуацию?

ОБНОВЛЕНИЕ 2: Yeeeeaaaahhh ... приближается. Я набрал «pageant» во время входа в VNC viewer, и он сказал, что «конкурс уже запущен». Поэтому я сказал, что, черт возьми, набрал его в пульт PuTTY ... ничего не случилось. Поэтому я решил, что это не работает, а теперь. Поэтому я затем выполнил plink -T -v [email protected], и было выполнено выполнение конкурсов lo-and-behold, но он сказал, что у него установлено 0 SSH-ключей. Так что это основная проблема. pageant - это приложение, основанное на пользовательском сеансе, и полагает, что пользователь SSH-администратора не совпадает с локальным администратором, поэтому он не обслуживает никаких ключей. Я также закрыл соединение PuTTY и заметил, что процесс дополнительного просмотра еще не запущен. Плохие новости # 1. Плохая новость № 2 заключается в том, что нет ограничений на количество процессов, которые я могу начать с PuTTY. Что делать?

ОКОНЧАТЕЛЬНО: проблема решена; см. последнее редактирование ответа.

ответ

1

Вот мой «Решение»:

1) Удалить ключевую фразу из файла закрытого ключа. pageant не позволяет вводить пароль в качестве аргумента командной строки, поэтому я не могу использовать его поверх putty. Отстой, но что еще я могу сделать?

2) В приложении freeSSHd введите C:\WINDOWS\system32\cmd.exe /K "pageant C:\Users\Administrator\.ssh\id_rsa.ppk" в поле командной оболочки, чтобы выполнить ssh-пользователя, чтобы выполнить конкурс, чтобы распознавать при запросе ключа. Это приводит к тому, что в фоновом режиме выполняется другой процесс exe-проекта, и он не будет закрыт, когда вы закроете соединение ssh, но я могу сделать только одну ночь за одну ночь. Если бы я мог каким-то образом получить PID процесса, который он порождает, а затем каким-то образом запускает скрипт на закрытии, который закрывает его, это было бы здорово.

3) Теперь он работает.

Приложение: Служба freeSSHD НЕ МОЖЕТ работать под учетной записью локального пользователя, она должна быть учетной записью SYSTEM; в противном случае он сразу же закрывает успешное соединение. Зачем? Без понятия. Я думаю, что это самое большое препятствие ... возможно, пользователь ssh, по сути, работает под учетной записью системы и, следовательно, не имеет доступа к уже запущенному процессу просмотра, запущенному под «Администраторы».

Обновление ответа: Я избавился от freeSSHd и установил Cygwin с openssh. Выберите «Да» для ВСЕХ опций конфигурации sshd, не слушайте другие обучающие программы онлайн, которые говорят «нет» определенным параметрам. Не запускайте sshd в учетной записи SYSTEM. Позвольте ему создать новую учетную запись пользователя и использовать ее. Самое большое преимущество в том, что теперь, когда я запускаю «показ» через PuTTY, неважно, сколько раз я это делаю, потому что он не будет появляться больше, чем два процесса! Один для фактической учетной записи локального администратора, который уже был запущен, а другой для необычной учетной записи «Администратор SSH» (который только что называется «Администратор»). Даже при входе с разных компьютеров это не вызовет новых процессов. Задача решена.

+0

+1 Более подробно, чем мой ответ. Мне нравится делать обертку, чтобы вставлять в oorder для этой обертки задание правильной переменной окружения и вызывать фактический plink в попытке принудительного применения определенных путей для этой переменной окружения, такой как '% HOME%', для любого пользователя, выполняющего это обертка. Но если ваш способ работает, +1. – VonC

1

Удостоверьтесь, что у вас есть переменная среды HOME, указана в C:\Users\Administrator (или %USERPROFILE%) в любое время, особенно если вы вошли в систему через PuTTY.

Это позволит ssh найти ваш конфигурационный файл ssh.

Также следует использовать ту же реализацию ssh при генерации ключей ssh ​​и при использовании ssh с git: см. «Git with SSH on Windows».
Если ваши личные ключи защищены паролем, см. «Why git can't remember my passphrase under Windows».

+0

Убедившись, что все переменные окружения указывают на правильные местоположения, я все еще получаю проблему. Я сделал небольшое бок о бок сравнение, войдя в систему с помощью VNC-просмотра, поэтому я могу увидеть командные подсказки вместе, чтобы увидеть различия. При запуске «plink -T -v [email protected]» я вижу, что локальная подсказка cmd вызывает файл pageant.exe для предоставления ключа, но интерфейс PuTTY не показывает, что вызов вообще происходит. Таким образом, кажется, что конкурс не активируется при входе в систему как пользователь SSH. Как мне обойти эту проблему? – JakeTheSnake

0

Если он не может найти ключ в любое место, он ожидает, вы также можете добавить параметры -v, -i как:

plink -v -ssh -2 -i /whatever/location/id_rsa -l git gitserver.acme.com 

Во-первых, -v (подробно) помогут точно определить проблему. Затем вы можете продолжить с параметром -i, чтобы убедиться, что он находит ключ, и он действителен.

Затем вы идете с %userprofile%.

Я также думаю, что ваш каталог должен быть c: \ Users \ Administrator.ssh - возможно, вы сделали опечатку, где вы забыли добавить обратную косую черту.

Смежные вопросы