Condividi le chiavi SSH private con Bash su Windows

14

Ho installato Windows 10 con Git. Questo Git usa la mia C:/Users/MyName dir come directory HOME e la /.ssh/ directory interna, in modo appropriato per l'approvvigionamento delle mie chiavi SSH private.

Ho appena abilitato e configurato "Bash su Ubuntu su Windows" (che boccone!) e ho installato anche Git. Vorrei che entrambi i Gits usassero lo stesso set di chiavi in modo che non importasse quale ambiente lavorassi su questa macchina, i miei commit verranno sempre da me.

Difficoltà nel dire che la directory HOME in bash è diversa ( /home/MyName ) e quindi non vede le chiavi situate nel% co_de ora distante. Ho pensato di partecipare a un vincitore cambiando la variabile di ambiente HOME usando

export HOME=/c/mnt/Users/MyName

Questo ha cambiato la directory HOME con successo, ma bash git continua a non vedere le chiavi contenute nella directory ../../mnt/c/Users/MyName/.ssh .

Non sono sicuro che sia A) perché bash git si aspetta chiavi in un formato di file diverso? (quelli correnti sono ./.ssh e id_rsa ) B) bash git sta ignorando la variabile HOME modificata? O forse entrambi.

Anch'io non sono sicuro di C) se cambiare arbitrariamente la variabile HOME come questa è una buona idea in generale con altri programmi che potrebbero farvi riferimento?

    
posta Toby 09.08.2016 - 16:38
fonte

2 risposte

14

Quindi, come commentato da Telastyn, ho aggiunto i link simbolici in WSL ~/.ssh/ a id_rsa e id_rsa.pub utilizzando:

> 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

Usando la stessa tecnica per collegare invece la directory symlink come suggerito dalla tripleee, ho avuto problemi finché non ho visto le barre finali che ho usato nel comando ln (a sinistra dall'uso del tasto tab per avere bash compilare la directory nome) erano un problema. Quindi, invece di fare quanto sopra, si potrebbe fare meglio:

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

Il file known_hosts differisce leggermente tra il mio uso di esso (git in powershell usando ssh-agent) in Windows e SSH ne fa uso in WSL, per cui il nome host e l'IP non sono hash nella versione di Windows. Secondo la pagina man di ssh-config, c'è un flag disponibile per disabilitare questo hashing che ho preso per significare che SSH avrebbe capito il file senza l'hashing che ha funzionato fino ad ora.

Quest'ultimo metodo indica che i dettagli utilizzati per SSH utilizzati tra i due diversi ambienti sono esattamente gli stessi.

Grazie a Matěj Kříž per aver sottolineato un personaggio piccolo ma vitale!

    
risposta data 11.11.2016 - 12:27
fonte
6

In base alla nuova build, le autorizzazioni di "Insider Build 17063" per i file ora funzionano in modo diverso. In breve, devi fare:

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

Questo consentirà alle autorizzazioni per la cartella ssh di funzionare come necessario. Quindi procede come suggerisce OP nella sua risposta.

Link pertinenti:

link link

Modifica

Sono tornato su questa domanda perché scopro che questa è solo una soluzione temporanea (sì, sono stupido). Ogni volta che riavvii (disconnetti) il tuo WSL, devi lanciare nuovamente questi comandi.

Quindi la soluzione che ora funziona per me è modificare (creare) il file di configurazione /etc/wsl.conf nella mia wsl ubuntu, e mettere dentro il seguente, quindi riavviare per eseguire nuovamente il mount:

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

Perché aggiungo i metadati:

Linux permissions are added as additional metadata to the file. This means a file can have Linux and Windows read/write/execute permission bits.

Perché impostare uid e gid:

By default, WSL sets the uid and gid to the value of the default user (in Ubuntu distro, the default user is created with uid=1000,gid=1000). If the user specifies a gid or uid option explicitly via this key, the associated value will be overwritten. Otherwise, the default value will always be appended.

Link pertinenti:

link link link

    
risposta data 14.05.2018 - 12:39
fonte

Leggi altre domande sui tag