Usando o git através do cygwin no windows 8

16

Eu tenho uma visualização do windows 8 dev (não tenho certeza se é relevante, mas eu nunca tive esse incômodo na máquina w7) e estou tentando clonar um repositório git do github.

O problema é que meu ~ / .ssh / id_rsa tem 440 permissões e precisa ser 400. Eu tentei chmodding mas todas as mudanças nas permissões do usuário se refletem nas permissões do grupo (ie chmod 600 resulta em 660, etc). Isso parece ser constante em qualquer arquivo do sistema de arquivos inteiro.

Eu tentei brincar com as ACLs, mas não adiantou (controle total do meu usuário e neguei a todos que resultaram em 000)

aqui estão alguns resultados 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 percebo que eu poderia usar msysgit ou algo assim, mas eu prefiro poder fazer tudo de um único terminal

Edit: Msysgit não funciona pelas mesmas razões

    
por 9point6 30.11.2011 / 21:08

7 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 chmod do que quiser.

    
por 17.04.2012 / 14:01
4

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

Versão reduzida:
Simplesmente crie um novo grupo de janelas vazio, use chgrp para mudar o grupo de id_rsa para isso, e então negue as permissões de leitura / escrita para o grupo.

Versão longa:
Pressione a super-chave e digite lusrmgr.msc . Use este gerenciador para criar um grupo vazio, chamado say EMPTY_GROUP

Agora precisamos informar o Cygwin sobre esse novo grupo.

mkgroup > /etc/group

Em seguida, atualizamos o grupo de id_rsa :

chgrp EMPTY_GROUP ~/.ssh/id_rsa

Finalmente, ache 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 em 7, mas não 8, mas o problema parece derivar 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 vem com o Cygwin, portanto, se você quiser usar o comando ssh com git, sobrescreva o ssh.exe do bin na sua instalação do git com o da pasta bin sua instalação do Cywgin.

    
por 27.03.2012 / 04:06
2

Win 8 + Cygwin

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

## Start Cygwin shell
cd .ssh
chmod 600 key-file-name
    
por 22.01.2014 / 18:16
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*

NB: a resposta aceita anterior está desatualizada. O nome do grupo é "HomeUsers", não "Users", ainda não é possível comentar.

    
por 04.05.2015 / 20:08
1

Também gostaria de comentar essa questão. Eu 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 dizendo que as permissões 0660 estavam abertas demais para o arquivo

~/.ssh/id_rsa.

É claro que o agente ssh pode rejeitar esta chave privada aberta.

Então eu tentei as coisas mencionadas neste encadeamento e outros encadeamentos que estavam relacionados à propriedade e ao padrão rwx do arquivo e a pasta ~ / .ssh

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

No entanto, o mesmo erro foi lançado repetidas vezes.

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

eval 'ssh-agent -s'

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

ssh-add ~/.ssh/id_rsa

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

git push origin master

e tudo funcionou bem.

    
por 19.10.2016 / 20:17
0

Para ampliar a resposta de Roi Danton . Se você instalou o Windows 8 sobre a instalação antiga do Windows e o diretório anterior do cygwin ainda está em vigor, será necessário fazer algumas outras coisas primeiro.

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

Haverá algumas contas de usuário associadas ao diretório e subdiretórios / arquivos semelhantes a S-1-2-34-1234567890-1234567890-1234567890-123

Remova-oseassumaapropriedadecomsuaprópriacontadeusuário.

  1. AcesseoPropertiesdodiretóriocygwin
  2. CliqueemAdvancednaguiaSecurity
  3. Changeoproprietárioparavocêmesmo.Vocêpodedigitarseuprimeironomeouendereçodee-mailassociado
  4. Removedeusuáriosdesconhecidosdalista
  5. CliqueemEnableInheritance
  6. Marqueaopção'Substituirtodasasentradasdepermissãodeobjetofilhoporentradasdepermissãoherdáveisdesteobjeto
  7. CliqueemOKnaparteinferiore,emseguida,emYesnacaixadediálogo.

Então, no Cygwin, altere o grupo de usuários de todos os arquivos-chave

De resposta de Roi Danton :

During the Installation of cygwin all files belong to no group. You can check this by doing an ls -al.

  1. Abra o Cygwin e navegue até o diretório .ssh - cd ~/.ssh
  2. Execute chgrp Users * - isso permitirá que você use chmod dos arquivos corretamente.
  3. Finalmente, execute chmod 400 * . 600 também funcionará.

Teste para ver se funcionou

Simplesmente ssh para o seu servidor de escolha. No meu caso, o seu 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.

Resultado ruim:

$ 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).
    
por 08.06.2012 / 02:36
0
  1. id_rsa - > Clique com o botão direito - > Propriedades - > Segurança - > Editar
  2. Remover 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. Aplicar

(Windows 10 Pro)

    
por 07.11.2016 / 21:21