Mam zainstalowany system Windows 10 z Git. Ten Git używa mojego C:/Users/MyName
katalogu jako katalogu HOME i katalogu /.ssh/
wewnątrz, odpowiednio do pozyskiwania moich prywatnych kluczy SSH.
Właśnie włączyłem i skonfigurowałem „Bash na Ubuntu w systemie Windows” (co za kęs!) I zainstalowałem tam również Gita. Chciałbym, aby oba Gits używały tego samego zestawu kluczy, tak że nie ma znaczenia, w jakim środowisku pracuję na tym komputerze, moje zobowiązania zawsze będą ode mnie pochodziły.
Problem w tym, że katalog HOME w bashu jest inny ( /home/MyName
) i dlatego nie widzi kluczy znajdujących się w odległym teraz ../../mnt/c/Users/MyName/.ssh
. Myślałem, że zwyciężę, zmieniając zmienną środowiskową HOME za pomocą
export HOME=/c/mnt/Users/MyName
To zmieniło katalog HOME, ale gash bash nadal nie widzi kluczy zawartych w katalogu ./.ssh
.
Nie jestem pewien, czy to jest A), ponieważ bash git oczekuje kluczy w innym formacie pliku? (obecne są id_rsa
i id_rsa.pub
) B) bash git ignoruje zmienioną zmienną HOME? A może jedno i drugie.
Nie jestem też pewien, czy C) czy dowolna zmiana zmiennej HOME jest dobrym pomysłem na ogół, czy inne programy mogą się do niej odwoływać?
.ssh
już istnieje w/home/MyName
... czy jeden plik dowiązań symbolicznych? takie, które bym zrobiłln -s /mnt/c/Users/MyName/.ssh/id_rsa /.ssh/id_rsa
? (nowość także w symlinkowaniu!).ssh
katalog.Odpowiedzi:
Tak jak skomentował Telastyn, dodałem dowiązania symboliczne w WSL
~/.ssh/
do plików id_rsa i id_rsa.pub, używając:Stosując tę samą technikę zamiast linkowania katalogu dowiązania symbolicznego, jak sugeruje trójka, miałem problemy, dopóki nie zauważyłem, że końcowe ukośniki użyte w
ln
poleceniu (odeszły od użycia klawisza tab, aby bash wypełnił nazwę katalogu) były problemem. Dlatego zamiast robić powyższe, lepiej byłoby zrobić:Plik znany_hosty różni się nieznacznie między moim użyciem go (git w PowerShell przy użyciu ssh-agent) w systemie Windows a użyciem SSH w WSL, przy czym nazwa hosta i adres IP nie są mieszane w wersji Windows. Według strony podręcznika dla ssh-config dostępna jest flaga, która wyłącza to haszowanie, które wziąłem przez to, że SSH zrozumie plik bez haszowania, który do tej pory się sprawdził.
Ta ostatnia metoda oznacza, że szczegóły zastosowane dla SSH używane między dwoma różnymi środowiskami są dokładnie takie same.
Dziękujemy Matějowi Křížowi za wskazanie małej, ale istotnej zaginionej postaci!
źródło
> ln -s /mnt/c/Users/MyName/.ssh/id_rsa ~/.ssh/id_rsa
dodać „~”. Nie?private keys
from,bash on windows
jeśli zawieras link
między katalogami. Spowoduje tossh agent
narzekanie na złe uprawnienia do plików kluczy prywatnych. Ponieważ pliki zamontowane z okna nie można zmienić ich uprawnień.W oparciu o nową kompilację „Insider Build 17063” uprawnienia do plików działają teraz inaczej. Krótko mówiąc, musisz zrobić:
Spowoduje to, że uprawnienia do folderu ssh będą działać tak, jak potrzebujesz. Następnie postępuje zgodnie z sugestią OP w swojej odpowiedzi.
Ważne linki:
https://github.com/Microsoft/WSL/issues/3181 https://blogs.msdn.microsoft.com/commandline/2018/01/12/chmod-chown-wsl-improvements/
EDYTOWAĆ
Wracam do tego pytania, ponieważ dowiaduję się, że jest to tylko tymczasowe rozwiązanie (tak, jestem głupi). Za każdym razem, gdy ponownie uruchomisz (wylogujesz się) swoją WSL, musisz ponownie rzucić te polecenia.
Tak więc rozwiązaniem, które teraz działa dla mnie, jest edycja (tworzenie) pliku konfiguracyjnego
/etc/wsl.conf
w moim Ublc wsl i wsl wewnątrz, a następnie ponowne uruchomienie, aby ponownie wykonać montowanie:Dlaczego dodaję metadane:
Dlaczego warto ustawić UID i GID:
Ważne linki:
https://docs.microsoft.com/en-us/windows/wsl/wsl-config https://blogs.msdn.microsoft.com/commandline/2018/02/07/automatically-configuring-wsl/ https: / /blogs.msdn.microsoft.com/commandline/2018/01/12/chmod-chown-wsl-improvements/
źródło