Это действительно вызвано ошибкой в Xamarin.Решение, предложенное пользователем 10613465, не работает с последними версиями Xamarin (по крайней мере, не для меня), однако я нашел обходной путь.
Фон
Не стесняйтесьчтобы пропустить этот раздел * Xamarin генерирует пару ключей SSH, хранящихся в папке% LOCALAPPDATA% \ AppData \ Local \ Xamarin \ MonoTouch.Файлы ключей SSH доступны в нескольких вариантах.Один - RSA, другой - OPENSSH.Аромат можно найти, проверив первую строку в файле ключей.Проблема в том, что Xamarin генерирует ключи OPENSSH;но не может их прочитать.
В последних версиях Xamarin закрытый ключ шифруется, а сама фраза-пароль шифруется и сохраняется в файле с именем passphrase.key.Если вы попытаетесь стереть файлы и сгенерировать новый набор ключей правильного типа, как было предложено, Xamarin отклонит ключи и сгенерирует новый набор, который он не понимает.
Stategy
Не стесняйтесь пропустить это тоже.Мои исследования показывают, что вы не можете преобразовать ключ OPENSSH в ключ RSA.Насколько я вижу, Xamarin не использует никакую внешнюю программу для генерации набора ключей, поэтому замена / перенаправление не является жизнеспособным решением.
Решение, которое я нашел, заключается в создании нового набора ключей поддерживаемого варианта., с той же парольной фразой и оставляя passphrase.key на месте.Получение парольной фразы - сложная часть.Я использовал VS для отладки другого экземпляра VS, чтобы получить его.
Процедура
Я предполагаю, что вы уже пытались сделать пару и у вас есть дефектная пара ключей (id_rsa, id_rsa.pub и passphrase.key)
Запустите Visual Studio (VS), откройте какой-нибудь проект.Мы назовем этот экземпляр A из VS.
Выберите Инструменты -> IOS -> Сопряжение с Mac.
Введите IP-адрес или имя вашего Mac, но НЕ вводите имя ипароля пока нет.
Запустите другой экземпляр VS.Мы называем этот экземпляр B.
В экземпляре B выберите Отладка -> Параметры
В Отладка -> Параметры, отмените выбор «Включить только мойкод ", нажмите" ОК ".
Выберите" Отладка "," Присоединить к процессу ".
Выберите экземпляр A VS.Процесс называется devenv.exe.
В экземпляре B выберите Отладка -> Windows -> Точки останова
В окне точек останова нажмитена Новый -> Точка останова функции.Выберите
Renci.SshNet.PrivateKeyFile.Open.
Теперь, в экземпляре A, введите имя и пароль и нажмите OK.Теперь на точку останова попадает экземпляр A, поэтому он останавливается.
В экземпляре B вы должны увидеть код ассемблера.Сам код не важен;но мы должны видеть аргументы метода.Откройте окно локальной переменной, нажав «Отладка» -> «Windows» -> «Locals»
Одной из переменных является фраза-пароль.Это похоже на UUID.Скопируйте его в буфер обмена и сохраните в удобном месте.
Возобновите выполнение, закройте оба экземпляра VS.
Введите C: \ Users \ mk\ AppData \ Local \ Xamarin \ MonoTouch
Убедитесь, что вы можете подключиться к вашему компьютеру Mac с помощью ключа и только что восстановленной парольной фразы:
ssh -i id_rsa mymac
Убрать старый ключ с пути:
mkdir старый ход id_rsa старый ход id_rsa.pub старый
Создать новыйнабор ключей, используйте ту же самую фразу-пароль.
ssh-keygen -t rsa -N "" -f "% LOCALAPPDATA% \ Xamarin \ MonoTouch \ id_rsa"
Убедитесь, что заголовок в id_rsa выглядит следующим образом
---- НАЧАЛО RSA PRIVATE KEY -----
и не так
-----BEGIN OPENSSH PRIVATE KEY-----
Если это не так, вам нужно использовать другой ssh-keygen.Возможно, там вам поможет шпаклевка.
Войдите на компьютер Mac.Отредактируйте .ssh / authorized_keys и удалите старый ключ.(Тот, который вы найдете в"% LOCALAPPDATA% \ Xamarin \ MonoTouch \ old \ id_rsa.pub"
Добавить новую публикацию из "% LOCALAPPDATA% \ Xamarin \ MonoTouch \ id_rsa.pub"
Это решило проблему для меня