2017-09-11 19 views
0

정말 이상한 문제가 있습니다. WSL에서 rsync 및 Vagrant ssh를 사용할 때 권한 문제가 계속 발생합니다.Vagrant WSL rsync 및 ssh 권한 오류

나는 Windows와 WSL에 설치된 버전 1.9.8을 사용하고 있습니다. 내가 vagrant up을 실행하면

export VAGRANT_WSL_ENABLE_WINDOWS_ACCESS="1" 
export VAGRANT_WSL_WINDOWS_ACCESS_USER_HOME_PATH="/mnt/c/Vagrant" 

그것이 성공적으로 버추얼 박스에서 VM을 생성 : 나는 다음과 같은 환경 변수를 수출했다. 내가 vagrant ssh salt를 사용할 때 나는 오류가

==> salt: Rsyncing folder: /mnt/c/Vagrant/ => /vagrant 
There was an error when attempting to rsync a synced folder. 
Please inspect the error message below for more info. 

Host path: /mnt/c/Vagrant/ 
Guest path: /vagrant 
Command: "rsync" "--verbose" "--archive" "--delete" "-z" "--copy-links" "--no-owner" "--no-group" "--rsync-path" "sudo rsync" "-e" "ssh -p 2222 -o LogLevel=FATAL -o ControlMaster=auto -o ControlPath=/tmp/ssh.216 -o ControlPersist=10m -o IdentitiesOnly=yes -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i 
'/mnt/c/Vagrant/.vagrant.d/insecure_private_key'" "--exclude" ".vagrant/" 
"/mnt/c/Vagrant/" "[email protected]:/vagrant" 
Error: Permission denied (publickey,gssapi-keyex,gssapi-with-mic). 
rsync: connection unexpectedly closed (0 bytes received so far) [sender] 
rsync error: unexplained error (code 255) at io.c(226) [sender=3.1.0] 

:하지만 중간 나는 다음과 같은 오류가 발생합니다

Permission denied (publickey,gssapi-keyex,gssapi-with-mic). 

그것은 내가 사용 문제가되지 않습니다 Vagrantfile의 종류. WSL의/root에 Vagrantfile을 배치하면 vagrant ssh을 사용할 수 있지만 여전히 rsync의 오류가 발생합니다.

방랑의 WSL 문서는 다음과 같은 말을하기 때문에이 정말 이상하다 :

Other useful WSL related environment variables: 

VAGRANT_WSL_WINDOWS_ACCESS_USER - Override current Windows username 
VAGRANT_WSL_DISABLE_VAGRANT_HOME - Do not modify the VAGRANT_HOME variable 
VAGRANT_WSL_WINDOWS_ACCESS_USER_HOME_PATH - Custom Windows system home path 

If a Vagrant project directory is not within the user's home directory on the Windows system, certain actions that include permission checks may fail (like vagrant ssh). 
When accessing Vagrant projects outside the WSL Vagrant will skip these permission checks when the project path is within the path defined in the VAGRANT_WSL_WINDOWS_ACCESS_USER_HOME_PATH environment variable. 
For example, if a user wants to run a Vagrant project from the WSL that is located at C:\TestDir\vagrant-project: 

사람이이 문제를 해결하는 방법을 알고 있나요? 아니면이 문제를 직접 경험 한 사람이 있습니까? 누군가가 나를 도울 수 있기를 바랍니다.

답변

0

여기에 관심이있는 사람들에게 해결책이 있습니다 (적어도 나를위한 해결책).

VAGRANT_WSL_WINDOWS_ACCESS_USER_HOME_PATH="/mnt/c/Vagrant" 환경 변수를 삭제했습니다. VAGRANT_HOME 환경 변수가 설정되지 않은 것으로 나타났습니다. 이 파일을 기본 위치 (~/.vagrant.d)로 설정하면 파일 권한을 조작하고 조작 할 수 있습니다. Windows 파일로는 할 수없는 작업입니다. rsync에 문제가 사라졌다이 키를 변경 한 후

$ export VAGRANT_HOME="/home/<user>/.vagrant.d" 

을하지만, SSH 권한 오류가 여전히 :

그래서 이것을 사용합니다. 이는 Vagrant가 기본적으로 새 ssh 키를 삽입하여 Vagrantfile의 루트 디렉토리에있는 .vagrant 폴더에 저장하기 때문입니다. 그래서 당신은 당신의 Vagrantfile이 퍼팅되어 있는지 확인 :

config.ssh.insert_key = false 

이 문제의 주요 원인은 방랑은 SSH 키에 대한 권한 검사를 수행한다는 것입니다. Vagrant는 새로운 생성 된 ssh 키를 Vagrantfile과 동일한 폴더에 넣기 때문에 권한 검사로 인해 실패합니다. Windows 경로에서 권한 검사가 실패합니다. config.ssh.insert_key = false을 설정하면 VAGRANT_HOME 폴더에있는 기본 안전하지 않은 키가 유지됩니다.

또한 .ssh 폴더의 구성 파일에 문제가 발생했습니다. 내 git ssh 설정을 위해 나는 RSAAuthentication yes 옵션을 사용했다. 따라서 rsync도 실패 할 수 있습니다.

WSL로 어려움을 겪고있는 누군가에게 도움이되기를 바랍니다. 이제 Windows에서 WSL로 완전하게 작동하는 Vagrant 설정을했습니다.