У меня Windows 10 с установленным Git. Этот Git использует мой C:/Users/MyName
каталог в качестве каталога HOME и каталог /.ssh/
внутри, соответственно, для получения моих личных ключей SSH.
Я только что включил и настроил «Bash на Ubuntu на Windows» (что за глоток!) И установил там Git. Я хотел бы, чтобы оба Gits использовали один и тот же набор ключей, чтобы не имело значения, в какой среде я работаю на этой машине, мои коммиты всегда будут исходить от меня.
Беда в том, что HOME dir в bash отличается ( /home/MyName
) и, следовательно, он не видит ключи, расположенные в теперь отдаленном ../../mnt/c/Users/MyName/.ssh
. Я думал, что стану победителем, изменив переменную среды HOME с помощью
export HOME=/c/mnt/Users/MyName
Это успешно изменило каталог HOME, но gash gash по-прежнему не видит ключи, содержащиеся в ./.ssh
каталоге.
Я не уверен, если это A), потому что Bash Git ожидает ключи в другом формате файла? (текущие id_rsa
и id_rsa.pub
) B) git игнорирует измененную переменную HOME? Или, может быть, оба.
Я также не уверен, C) если произвольное изменение переменной HOME, как это, является хорошей идеей в целом для других программ, которые могут ссылаться на нее?
.ssh
уже существует в/home/MyName
... можно файлы символической ссылки? такое что я бы сделалln -s /mnt/c/Users/MyName/.ssh/id_rsa /.ssh/id_rsa
? (плохо знаком с символическими ссылками тоже!).ssh
каталог.Ответы:
Так, как прокомментировал Теластин, я добавил символические ссылки в WSL
~/.ssh/
к id_rsa и id_rsa.pub, используя:Используя ту же технику для связывания каталога с символическими ссылками, как предложено tripleee, у меня были проблемы до тех пор, пока я не увидел, что завершающие косые черты, которые я использовал в
ln
команде (осталось от использования клавиши табуляции, чтобы bash заполнял имя каталога), были проблемой. Таким образом, вместо того, чтобы сделать вышеупомянутое, лучше было бы сделатьФайл known_hosts немного отличается между моим использованием (git в powershell с использованием ssh-agent) в Windows и использованием SSH в WSL, при этом имя хоста и IP не хэшируются в версии Windows. Согласно man-странице для ssh-config, есть флаг, позволяющий отключить это хэширование, которое я принял, чтобы SSH понимал файл без хэширования, которое до сих пор работало.
Этот последний метод означает, что детали, используемые для SSH, используемые в двух разных средах, абсолютно одинаковы.
Спасибо Матей Кржиж за то, что он указал на маленького, но жизненно важного персонажа!
источник
> ln -s /mnt/c/Users/MyName/.ssh/id_rsa ~/.ssh/id_rsa
добавить "~". Нет?private keys
from,bash on windows
если они делаютs link
между каталогами. Это может привестиssh agent
к жалобам на плохое разрешение файлов закрытого ключа. Поскольку файлы смонтированы из окна, их разрешение не может быть изменено.На основании новой сборки «Insider Build 17063» разрешения для файлов теперь работают по-другому. Короче нужно сделать:
Это заставит разрешения для вашей папки ssh работать так, как вам нужно. Затем обрабатывается, как предполагает OP в своем ответе.
Соответствующие ссылки:
https://github.com/Microsoft/WSL/issues/3181 https://blogs.msdn.microsoft.com/commandline/2018/01/12/chmod-chown-wsl-improvements/
РЕДАКТИРОВАТЬ
Я вернулся к этому вопросу, потому что я обнаружил, что это только временное решение (да, я тупой). Каждый раз, когда вы перезапускаете (выходите из системы) ваш WSL, вам нужно снова вызывать эти команды.
Таким образом, решение, которое работает для меня сейчас, состоит в том, чтобы отредактировать (создать) конфигурационный файл
/etc/wsl.conf
в моем wsl ubuntu и поместить внутрь следующего, затем перезапустить, чтобы снова выполнить монтирование:Почему я добавляю метаданные:
Зачем устанавливать UID и GID:
Соответствующие ссылки:
https://docs.microsoft.com/en-us/windows/wsl/wsl-config https://blogs.msdn.microsoft.com/commandline/2018/02/07/automatics-configuring-wsl/ https: / /blogs.msdn.microsoft.com/commandline/2018/01/12/chmod-chown-wsl-improvements/
источник