Usando git através do cygwin no windows 8

16

Eu tenho uma pré-visualização do desenvolvedor do Windows 8 (não tenho certeza se é relevante, mas nunca tive esse problema no w7) e estou tentando clonar um repositório git no github.

O problema é que meu ~ / .ssh / id_rsa tem 440 permissões e precisa ser 400. Tentei fazer chmodding, mas as alterações nas permissões de usuário são refletidas nas permissões de grupo (por exemplo, o chmod 600 resulta em 660, etc. ) Isso parece ser constante em qualquer arquivo em todo o sistema de arquivos.

Eu tentei mexer com as ACLs, mas sem sucesso (controle total no meu usuário e negar que todos resultaram em 000)

aqui estão algumas saídas para ajudar:

$ git clone [removed]
Cloning into [removed]...
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0660 for '/home/john/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /home/john/.ssh/id_rsa
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

$ ll ~/.ssh
total 6
-r--r----- 1 john None 1675 Nov 30 19:15 id_rsa
-rw-rw---- 1 john None  411 Nov 30 19:15 id_rsa.pub
-rw-rw-r-- 1 john None  407 Nov 30 18:43 known_hosts

$ chmod -v 400 ~/.ssh/id_rsa
mode of `/home/john/.ssh/id_rsa' changed from 0440 (r--r-----) to 0400 (r--------)

$ ll ~/.ssh
total 6
-r--r----- 1 john None 1675 Nov 30 19:15 id_rsa
-rw-rw---- 1 john None  411 Nov 30 19:15 id_rsa.pub
-rw-rw-r-- 1 john None  407 Nov 30 18:43 known_hosts

$ set | grep CYGWIN
CYGWIN='sbmntsec ntsec server ntea'

Eu sei que eu poderia usar o msysgit ou algo assim, mas eu preferiria poder fazer tudo, de um único terminal

Edit: Msysgit também não funciona pelos mesmos motivos

9point6
fonte
O mesmo problema aqui. Visualização do consumidor do Windows 8.
Simon Hartcher
"Eu tentei mexer com as ACLs, mas sem sucesso (controle total no meu usuário e negar que todos resultaram em 000) " Então ls -lmostra as permissões como 000( ----------) - mas você ainda é capaz de ler o arquivo e fazer sshe git clonereclamar sobre isso? Especulo que sshnão reclame das permissões que parecem ser muito rígidas. Uma rápida olhada no código-fonte tende a confirmar isso, mas não testei.
Keith Thompson

Respostas:

26

Não há necessidade de um grupo vazio.

Durante a instalação do cygwin, todos os arquivos não pertencem a nenhum grupo. Você pode verificar isso fazendo um ls -al. Você verá que nenhum grupo ("nenhum") está nos arquivos. Basta alterá-lo para Usuários:

chgrp Users *

Depois disso, você pode chmodo que quiser.

Roi Danton
fonte
chgrp Users *apenas alterará todos os arquivos e pastas $PWD. Para alterar todas as subpastas / arquivos, bem como $ PWD, use a opção -R: #chgrp -R users *
187 adam
4

Eu encontrei um hack específico do Cygwin para contornar isso por enquanto.

Versão curta:
Simplesmente crie um novo grupo de janelas vazias, use chgrp para alterar o grupo de id_rsa para isso e negue permissões de leitura / gravação para o grupo.

Versão longa:
pressione a tecla super e digite lusrmgr.msc . Use este gerenciador para criar um grupo vazio, chamado digamos EMPTY_GROUP

Agora precisamos contar à Cygwin sobre esse novo grupo.

mkgroup > /etc/group

Em seguida, atualizamos o grupo de id_rsa :

chgrp EMPTY_GROUP ~/.ssh/id_rsa

Por fim, vá encontrar id_rsa no Windows Explorer e, na guia Segurança, em Propriedades, negue permissões de leitura / gravação, e você deve estar pronto.

Não tenho certeza de como o Cygwin conseguiu lidar com isso no 7, mas não no 8, mas o problema parece resultar do grupo do arquivo id_rsa ser None, um grupo que sempre tem acesso total de leitura / gravação.

Além disso, isso parece funcionar apenas para o ssh.exe que acompanha o Cygwin; portanto, se você quiser usar o say ssh com git, substitua o ssh.exe do bin na sua instalação do git pelo que está na pasta bin da instalação do Cywgin .

Daniel Stiner
fonte
2

Vitória 8 + Cygwin

Estou no Windows 8, 64 bits. Fazer o seguinte resolve isso para mim:

## Start Cygwin shell
cd .ssh
chmod 600 key-file-name
gsbabil
fonte
1

No cygwin, digite estes comandos:

  • Defina o grupo correto para a pasta pessoal:

    chgrp -Rv HomeUsers /home

  • Defina as permissões corretas para os arquivos de identidade ssh:

    chmod 600 -Rv ~/.ssh/id*

Nota: a resposta anterior aceita está desatualizada. O nome do grupo é "Usuários domésticos", não "Usuários", ainda não pode comentar.

Julien Ricard
fonte
1

Eu também gostaria de comentar sobre essa questão. Encontrei um problema semelhante no meu PC com Windows 7 usando o git através do Cygwin.

Ao tentar enviar alterações do meu repositório git local para um repositório remoto (usando um ssh e um par de chaves para autenticação), o git lançou uma mensagem de que as permissões 0660 estavam muito abertas para o arquivo

~ / .ssh / id_rsa.

Obviamente, não há problema em o ssh-agent rejeitar essa chave privada aberta.

Então, tentei as coisas mencionadas neste thread e em outros threads relacionados à propriedade e ao padrão rwx do arquivo e à pasta ~ / .ssh

chgrp Users ~/.ssh/*
chmod 400 ~/.ssh/id_rsa

No entanto, o mesmo erro foi repetidamente repetido.

Por alguma razão, foi necessário interromper o processo ssh-agent no cygwin e executar o seguinte comando no shell bourne again (bash).

eval `ssh-agent -s`

Não se esqueça de adicionar a identidade desejada ao ssh-agent, por exemplo

ssh-add ~/.ssh/id_rsa

Então eu repeti um comando push válido como

git push origin master

e tudo funcionou bem.

MichaelHuelsen
fonte
0

Para estender a resposta de Roi Danton . Se você instalou o Windows 8 na sua antiga instalação do Windows e seu diretório cygwin anterior ainda está intacto, você precisará fazer algumas outras coisas primeiro.

Primeiro, tome posse dos diretórios / arquivos da Cygwin

Haverá algumas contas de usuário associadas ao diretório e subdiretórios / arquivos que se parecem com S-1-2-34-1234567890-1234567890-1234567890-123

Contas de usuário

Remova-os e tome posse com sua própria conta de usuário.

  1. Acesse o Propertiesdiretório cygwin
  2. Clique Advancedna Securityaba
  3. Changeo proprietário para si mesmo. Você pode digitar seu primeiro nome ou endereço de email associado
  4. Remove quaisquer usuários desconhecidos da lista
  5. Clique Enable Inheritance
  6. Marque `Substitua todas as entradas de permissão do objeto filho por entradas de permissão herdáveis ​​deste objeto
  7. Clique OKna parte inferior e depois Yesna caixa de diálogo.

Caixa de diálogo Segurança do Windows

Em Cygwin, altere o grupo de usuários de todos os arquivos-chave

Da resposta de Roi Danton :

Durante a instalação do cygwin, todos os arquivos não pertencem a nenhum grupo. Você pode verificar isso fazendo um ls -al.

  1. Abra o Cygwin e navegue até o .sshdiretório -cd ~/.ssh
  2. Executar chgrp Users *- isso permitirá que você faça chmodos arquivos corretamente.
  3. Finalmente, corra chmod 400 *. 600 também funcionará.

Teste para ver se funcionou

Simplesmente ssh para o servidor de sua escolha. No meu caso, é o Bitbucket .

Bom resultado:

$ ssh [email protected]
PTY allocation request failed on channel 0
conq: logged in as simonhartcher.

You can use git or hg to connect to Bitbucket. Shell access is disabled.
Connection to bitbucket.org closed.

Mau resultado:

$ ssh [email protected]
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0755 for '/home/Simon/.ssh/id_dsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /home/Simon/.ssh/id_dsa
Permission denied (publickey).
Simon Hartcher
fonte
2
Com o OpenSSH para Windows (não cygwin), recebo chgrp Users * "C: /opscode/chef/embedded/bin/chgrp.exe": grupo inválido `Users '
Jonathan
0
  1. id_rsa -> Clique com o botão direito do mouse -> Propriedades -> Segurança -> Editar
  2. Remova todos os grupos e usuários (não pressione OK ou Aplicar)
  3. Adicionar -> Digite seu nome de usuário atual -> Verificar nomes
  4. Permitir "Controle total"
  5. Aplique

(Windows 10 Pro)

otimistas
fonte