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
fonte
ls -l
mostra as permissões como000
(----------
) - mas você ainda é capaz de ler o arquivo e fazerssh
egit clone
reclamar sobre isso? Especulo quessh
nã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.Respostas:
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:Depois disso, você pode
chmod
o que quiser.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 *
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.
Em seguida, atualizamos o grupo de 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 .
fonte
Vitória 8 + Cygwin
Estou no Windows 8, 64 bits. Fazer o seguinte resolve isso para mim:
fonte
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.
fonte
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
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
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).
Não se esqueça de adicionar a identidade desejada ao ssh-agent, por exemplo
Então eu repeti um comando push válido como
e tudo funcionou bem.
fonte
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
Remova-os e tome posse com sua própria conta de usuário.
Properties
diretório cygwinAdvanced
naSecurity
abaChange
o proprietário para si mesmo. Você pode digitar seu primeiro nome ou endereço de email associadoRemove
quaisquer usuários desconhecidos da listaEnable Inheritance
OK
na parte inferior e depoisYes
na caixa de diálogo.Em Cygwin, altere o grupo de usuários de todos os arquivos-chave
Da resposta de Roi Danton :
.ssh
diretório -cd ~/.ssh
chgrp Users *
- isso permitirá que você façachmod
os arquivos corretamente.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:
Mau resultado:
fonte
chgrp Users *
"C: /opscode/chef/embedded/bin/chgrp.exe": grupo inválido `Users '(Windows 10 Pro)
fonte