Windows에서 Bash와 개인 SSH 키 공유


18

Git이 설치된 Windows 10이 설치되어 있습니다. 이 Git은 내 C:/Users/MyNamedir을 HOME 디렉토리로 사용하고 그 /.ssh/안에 dir을 사용하여 개인 SSH 키를 적절하게 소싱합니다.

방금 "Windows의 Ubuntu에서 배쉬"를 활성화하고 설정했습니다. 나는 두 Gits 가이 기계에서 어떤 환경에서 작업하든 상관없이 동일한 키 세트를 사용하기를 원합니다. 내 커밋은 항상 나에게서 올 것입니다.

bash의 HOME 디렉토리가 다르기 /home/MyName때문에 문제가 발생하여 현재 먼 곳에있는 키를 볼 수 없습니다 ../../mnt/c/Users/MyName/.ssh. HOME 환경 변수를 사용하여 승자가 될 것이라고 생각했습니다.

export HOME=/c/mnt/Users/MyName

이것은 HOME 디렉토리를 성공적으로 변경했지만 bash git은 여전히 ./.ssh디렉토리에 포함 된 키를 보지 못합니다 .

bash git이 다른 파일 형식의 키를 기대하기 때문에 이것이 A인지 확실하지 않습니까? (현재 사람은 id_rsaid_rsa.pub) B) 배시 자식 변경된 HOME 변수를 무시? 아니면 둘 다.

C) 이와 같이 HOME 변수를 임의로 변경하는 것이 일반적으로 그것을 참조 할 수있는 다른 프로그램에서 좋은 생각이라면 확실하지 않습니다.


2
symlink를위한 시간 인 것 같습니다.
Telastyn

흠은 .ssh이미 존재합니다 /home/MyName... 하나의 심볼릭 링크 파일이 있습니까? 내가 할 수 있도록 ln -s /mnt/c/Users/MyName/.ssh/id_rsa /.ssh/id_rsa? (Symlinking도 처음입니다!)
Toby

팔! 그것은 치료를 작동합니다! @Telastyn 당신은 내가 (단지 홈페이지 VAR를 변경하면 처음부터 일을하지 않았다 내가 왜 아직 확실 해요하지만) :-) 받아 들일 겁니다 답변에 의견을하려는 경우
토비

2
전체 .ssh디렉토리 를 심볼릭 링크하면 더 잘 작동합니다 .
tripleee

1
내 기억에 따르면 PuTTY는 다른 위치에 물건을 넣었지만 Windows를 마지막으로 터치 한 후 1 년이 지났습니다 ($ dmr)
tripleee

답변:


19

Telastyn은 다음과 같이 WSL의 심볼릭 링크를 id_rsa ~/.ssh/및 id_rsa.pub 에 추가했습니다 .

> ln -s /mnt/c/Users/MyName/.ssh/id_rsa ~/.ssh/id_rsa
> ln -s /mnt/c/Users/MyName/.ssh/id_rsa.pub ~/.ssh/id_rsa.pub

트리플 리가 제안한대로 동일한 기술을 사용하여 symlink 디렉토리를 대신 링크했을 때 ln명령 에서 사용한 후행 슬래시 (탭 키를 사용하여 bash가 디렉토리 이름을 채우지 않음)가 문제가 될 때까지 문제가있었습니다. 따라서 위의 작업을 수행하는 대신 다음을 수행하는 것이 좋습니다.

> ln -s /mnt/c/Users/Myname/.ssh ~/.ssh

known_hosts 파일은 Windows에서의 파일 사용 (ssh-agent를 사용하는 powershell의 git)과 WSL에서의 SSH 사용과 약간 다르므로 호스트 이름과 IP는 Windows 버전에서 해시되지 않습니다. ssh-config 매뉴얼 페이지에 따르면 SSH가 해싱없이 파일을 이해했기 때문에이 해싱을 비활성화하는 데 사용할 수있는 플래그가 있습니다.

후자의 방법은 서로 다른 두 환경간에 사용되는 SSH에 사용 된 세부 사항이 정확히 동일하다는 것을 의미합니다.

작지만 활기가없는 캐릭터를 지적 해준 Matěj Kříž에게 감사합니다!


3
> ln -s /mnt/c/Users/MyName/.ssh/id_rsa ~/.ssh/id_rsa"~"를 추가 해야합니다 . 아니?
Matěj Kříž

7
private keysfrom 이 디렉토리 사이에 bash on windows있으면 from 을 사용할 수 없습니다 s link. 그렇게하면 ssh agent개인 키 파일에 대한 잘못된 권한에 대해 불평 할 수 있습니다. 창에서 마운트 된 파일이므로 권한을 변경할 수 없습니다.
oak

@ oak bash로 가능합니까?
Tj Gienger

@TjGienger 무슨 뜻인가요?
oak

@ oak, 이것이 Entity Black이 아래 에서 수정하려고하는 것 입니까? 아니면 다른 문제를 해결합니까?
sferencik

11

파일에 대한 새 빌드 "Insider Build 17063"권한에 따라 현재 다르게 작동합니다. 요컨대 다음을 수행해야합니다.

sudo umount /mnt/c
sudo mount -t drvfs C: /mnt/c -o metadata

그러면 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.confwsl 우분투에서 구성 파일을 편집 (생성) 하고 다음을 넣고 다시 마운트를 수행하는 것입니다.

# Enable extra metadata options by default, set uid and gid to 0
[automount]
options = "metadata,uid=,gid="

메타 데이터를 추가해야하는 이유 :

Linux 권한은 파일에 추가 메타 데이터로 추가됩니다. 이는 파일이 Linux 및 Windows 읽기 / 쓰기 / 실행 권한 비트를 가질 수 있음을 의미합니다.

왜 UID와 GID를 설정해야합니까?

기본적으로 WSL은 uid 및 gid를 기본 사용자의 값으로 설정합니다 (Ubuntu 배포판에서 기본 사용자는 uid = 1000, gid = 1000으로 생성됨). 사용자가이 키를 통해 gid 또는 uid 옵션을 명시 적으로 지정하면 연관된 값을 겹쳐 씁니다. 그렇지 않으면 기본값이 항상 추가됩니다.

관련 링크 :

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/

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.