У меня есть машина с Windows Server 2008 (iis7), на которой настроен CopSSH. Чтобы подключиться к нему, у меня есть машина с Windows 7 с установленным Mercurial 1.5.1 (и TortoiseHg).
Я могу подключиться к серверу с помощью PuTTY с нестандартным портом ssh и файлом .ppk. Итак, я знаю, что на сервер можно подключиться по SSH.
Затем я хотел использовать CLI для подключения через hg clone, чтобы получить частное репо. Я видел в другом месте, что вам нужно настроить ssh в вашем файле mercurial.ini, поэтому в моем mercurial.ini есть строка: ssh = plink.exe -ssh -C -l username -P #### -i "C:/Program Files/PuTTY/Key Files/KyleKey.ppk"
Примечание:username заполняется именем пользователя, которое я установил через copSSH. #### заполнен нестандартным портом ssh, который я определил для copSSH.
Я пытаюсь выполнить команду hg clone ssh://inthom.com, но получаю следующую ошибку:remote: bash: inthom.com: command not found
abort: no suitable response from remote hg!
Похоже, что hg или plink анализируют имя хоста так, что думают, что inthom.com — это команда, а не сервер, к которому нужно подключиться по ssh. Это действительно странно.
Затем я попытался просто использовать plink для подключения через plink -P #### ssh://inthom.com, и затем мне было предложено ввести имя пользователя и следующий пароль. Я ввожу их оба, а затем получаю эту ошибку:bash: ssh://inthom.com: No such file or directory
Так что теперь похоже, что plink неправильно анализирует имя хоста.
Я некоторое время возился, пытаясь понять, как сделать вызов hg clone с пустым полем ssh://, и в конце концов понял, что эта команда позволяет мне получить доступ к серверу и клонировать тестовый репозиторий на сервере inthom.com:< бр> hg clone ssh://!/Repos/test
! - это символ, который я нашел, поэтому я оставлю имя хоста пустым, но укажу папку репо для клонирования.
Чего я действительно не понимаю, так это того, как plink вообще знает, к какому серверу подключаться по ssh. ни мой mercurial.ini, ни команда не указывают сервер. Ни в одном из примеров hg clone, которые я видел, нет символа !. Все они используют адрес, что имеет смысл, поэтому вы можете подключиться к любому репозиторию через ssh, который хотите клонировать.
Мое единственное предположение состоит в том, что каким-то образом по умолчанию используется последний сервер, к которому я использовал PuTTY для SSH, но я подключился по SSH к другому серверу, а затем попытался использовать plink, чтобы добраться до него, но plink по-прежнему по умолчанию использует inthom.com (проверено с помощью аргумент -v для подключения). Поэтому я не понимаю, как plink вообще получает это значение сервера.
Для «забавы» я попытался использовать TortoiseHg и могу клонировать репо только тогда, когда я использую ssh://!/Repos/test в качестве источника.
Теперь вы можете видеть, что, поскольку plink неправильно анализирует имя хоста, мне пришлось указать номер порта и имя пользователя в файле mercurial.ini, а не в имени хоста, например [email protected]:#### как вы ожидаете. Попытка понять это поначалу сводила меня с ума, потому что я получал ошибки о том, что хост недоступен, чего, как я знал, быть не должно.
Мой вопрос заключается в том, как я могу настроить свою настройку так, чтобы ssh://[email protected]:####/Repos/test правильно анализировался как имя пользователя, имя хоста, номер порта и репо для копирования? Что-то не так с версией plink, которую я использую, или есть какие-то настройки, которые я мог перепутать? Если это ошибка plink, есть ли альтернативный инструмент, который я могу использовать?
Я собираюсь попытаться настроить своего друга для подключения к этому же репозиторию, поэтому я хотел бы иметь чистое решение вместо этого ! бизнеса. Особенно, когда я понятия не имею, как plink получает этот сервер по умолчанию, поэтому я не уверен, сможет ли он вообще правильно добраться до inthom.com.
PS. Мне пришлось использовать массу различных руководств, чтобы хотя бы добраться до этого этапа. Поэтому я еще не пробовал отправлять какие-либо изменения на сервер. Надеюсь, я разберусь с этим, и тогда я смогу попробовать внести изменения в репо.
remote: bash: inthom.com: command not found abort: no suitable response from remote hg!Вам нужен префикс ssh://, чтобы сообщить Mercurial, что вы хотите использовать ssh-соединение. Точно так же, когда я пытаюсь сделатьhg clone ssh://inthom.com/Repos/test, я получаю error:remote: bash: inthom.com: command not found abort: no suitable response from remote hg!Итак, plink откуда-то все еще получает inthom.com по умолчанию... Есть еще идеи? - person Kyle Tolle   schedule 12.05.2010