Permissões de chave privada SSH usando Git GUI ou ssh-keygen são muito abertas

244

Recentemente, fui incapaz de clonar ou enviar para o github e estou tentando encontrar a causa raiz.

Isso está no windows

Eu tenho o cygwin + git e o msysgit.

Msysgit foi instalado com as seguintes opções:

  • OpenSSH
  • Use o Git no prompt de comando do Windows

Isso me dá quatro ambientes para tentar usar o git:

  • Prompt de cmd do Windows
  • Powershell
  • Git Bash
  • Cygwin

De alguma forma, consegui me colocar em uma posição em que, quando tento clonar um repositório usando msysgit, cmd.exe ou Powershell, recebo o seguinte erro:

> Initialized empty Git repository in
> C:/sandbox/SomeProject/.git/
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> @    WARNING: UNPROTECTED PRIVATE KEY FILE!          @
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> Permissions 0644 for
> '/c/Users/Ben/.ssh/id_rsa' are too
> open. It is recommended that your
> private key files are NOT accessible
> by others. This private key will be
> ignored. bad permissions: ignore key:
> /c/Users/Ben/.ssh/id_rsa Permission
> denied (publickey). fatal: The remote
> end hung up unexpectedly

Isso está usando a pasta .ssh na minha pasta c: \ users \ ben \, que é usada pelo msysgit. Suspeito que o cygwin funcione porque a pasta .ssh está localizada em outro lugar, mas não sei por que

No Git Bash, verifico as permissões:

$ ls -l -a ~/.ssh

O que me dá:

drwxr-xr-x    2 Ben      Administ        0 Oct 12 13:09 .    
drwxr-xr-x   34 Ben      Administ     8192 Oct 12 13:15 ..    
-rw-r--r--    1 Ben      Administ     1743 Oct 12 12:36 id_rsa
-rw-r--r--    1 Ben      Administ      399 Oct 12 12:36 id_rsa.pub    
-rw-r--r--    1 Ben      Administ      407 Oct 12 13:09 known_hosts

Essas permissões são aparentemente muito relaxadas. Como eles ficaram assim, não faço ideia.

Eu posso tentar mudá-los ...

$ chmod -v -R 600 ~/.ssh

o que me diz:

mode of `.ssh' changed to 0600 (rw-------)
mode of `.ssh/id_rsa' changed to 0600 (rw-------)
mode of `.ssh/id_rsa.pub' changed to 0600 (rw-------)
mode of `.ssh/known_hosts' changed to 0600 (rw-------)

Mas parece não ter efeito. Eu ainda recebo o mesmo erro, e fazendo

$ ls -l -a ~/.ssh

produz as mesmas permissões de antes.

ATUALIZAR:

Tentei corrigir as permissões para esses arquivos no cygwin, e o cygwin reporta suas permissões corretamente, o gitbash não: texto alternativo http://cdn.cloudfiles.mosso.com/c54102/app7962031255448924.jpg

Alguma idéia de como posso realmente corrigir essas permissões?

Ben Scheirman
fonte
1
Você pode nos dizer qual é o sistema de arquivos nativo que C: \ Users \ Ben \ está usando. Parece que esse sistema de arquivos não oferece suporte a permissões reais ou os mapeamentos informados sobre o shell e o sistema de arquivos não estão funcionando corretamente. Você pode alterar as permissões via ACLs do Windows?
Chen Levy
Estou usando o Windows 7. Posso alterar as permissões para isso, mas o que devem ser? Todos os documentos do github / ssh dizem que você precisa do 0600, mas não tenho idéia do que isso significa nas ACLs do Windows.
21459 Ben Scheirman
2
Uh ... um pouco de uma nota de rodapé aqui, mas alterar um diretório para 600 é uma má idéia. Diretórios (e arquivos executáveis) sempre têm um dígito a mais (700 não 600, 755 não 644). Fazer isso em um diretório o tornará impossível de listar. Consulte dartmouth.edu/~rc/help/faq/permissions.html para obter explicações mais detalhadas.
Mark Embling
Você se opõe a usar o PuTTY?
Greg Bacon
se isso resolver meu problema, não, mas estou curioso para saber por que essa configuração não funciona para mim.
Ben Scheirman 15/10/09

Respostas:

361

Você alterou as permissões em todo o diretório, o que eu concordo com o Splash é uma má idéia. Se você se lembrar de quais são as permissões originais para o diretório, tentarei defini-las novamente e faça o seguinte

cd ~/.ssh
chmod 700 id_rsa

dentro da pasta .ssh. Isso definirá o arquivo id_rsa como rwx (leitura, gravação, execução) apenas para o proprietário (você) e zero acesso para todos os outros.

Se você não conseguir lembrar quais são as configurações originais, adicione um novo usuário e crie um conjunto de chaves SSH para esse usuário, criando assim uma nova pasta .ssh que terá permissões padrão. Você pode usar essa nova pasta .ssh como referência para permissões para redefinir sua pasta e arquivos .ssh.

Se isso não funcionar, eu tentaria fazer uma desinstalação do msysgit, excluir TODAS as pastas .ssh no computador (apenas para uma medida segura), reinstalar o msysgit com as configurações desejadas e tentar reiniciar completamente (apesar de achar que você me disse você já tentou isso).

Editado: Também encontrei este link no Google - Correção "AVISO: ARQUIVO CHAVE PRIVADA NÃO PROTEGIDA!" no Linux Embora seja direcionado ao linux, pode ajudar, já que estamos falando de permissões liunx e outras coisas.

Koby
fonte
2
Esta resposta se aplica especificamente ao uso do cygwin ou do msysgit (já que o msysgit usa um subconjunto do cygwin ou possivelmente do mingw32). O problema é a permissão no arquivo. O Git gosta de trabalhar com (principalmente) permissões linux (provavelmente um subproduto do seu público-alvo). Sabe-se que o uso do git.exe no shell do Winodws tem problemas, eu recomendaria manter o msysgit. Pelo menos até o GitSharp estar funcionando totalmente.
Koby
2
Isso não está funcionando no Windows 8 e na minha instalação do cygwin em janeiro de 14, como após o chmod 700, ele está mostrando o arquivo como rwxrwx ---. As permissões do grupo devem ser definidas para o que eu definir para o usuário e não posso usar minhas chaves.
Dean Hiller
1
@ DeanHiller, deve ter uma permissão de 700 -rwx------. Portanto, o que você está mostrando não está correto se você executou o comando chmod corretamente.
Koby
5
@Koby não, foi um bug com um trabalho aroudn ... precisa usar chgrp -R Users ~ / .ssh e, em seguida, chmod agora está funcionando e realmente altera as permissões corretamente ..... um bug conhecido que finalmente encontrei no outro post.
Dean Hiller
2
Posso verificar se existe algum tipo de bug no GitBash para Windows em que as permissões corretas NÃO PODEM ser definidas com chmod ou as permissões não são lidas corretamente. chmod 600 id_rsd; ls -l id_rs -> -rwx-r - r--
Charlweed
74

Há um erro no chmod do cygwin, consulte:

/superuser/397288/using-cygwin-in-windows-8-chmod-600-does-not-work-as-expected

chgrp -Rv Users ~/.ssh/* 
chmod -vR 600 ~/.ssh/id_rsa
kittikun
fonte
Por qualquer motivo, o mapeamento das permissões do Windows para as permissões do tipo cygwin / * nix é um pouco confuso. Embora eu tenha removido as permissões de todos os outros usuários no lado do Windows, o cygwin ainda aplicou as permissões para mim, o usuário , para outro grupo chamado None. (Suponho que este seja um procedimento padrão quando um grupo não foi definido explicitamente). Essa alteração em um grupo explícito Userssupostamente permitiu que o cygwin separasse as permissões e eu poderia finalmente definir 600 em vez de um 660 automático.
t-mart
3
Esta é a resposta correta real. Aquele que foi votado como a resposta correta - acho que as pessoas que votaram foram usuários do Linux e não perceberam que ele estava executando o comando corretamente. Eu tive o mesmo problema com o cygwin hoje. Obrigado!
22614 Michael
Antes de aplicar esta solução, quando eu usava o chmod 600git, eu reclamava que minhas permissões ainda estavam 0660. A correção da propriedade do grupo faz com que o chown seja aplicado corretamente.
Guilherme Rodrigues
1
Eu atualizei o Cygwin e funcionou. Eles devem ter corrigido o erro.
Duncan Calvert
17

Para sistemas * nix, a solução óbvia é chmod 600 id_rsaofc, mas no Windows 7 eu tive que bater minha cabeça contra a parede por um tempo, mas depois encontrei a solução mágica:

vá para Meu computador / Clique com o botão direito / Propriedades / Configurações avançadas do sistema / Variáveis ​​de ambiente e DELETE a variável (possivelmente do sistema e do ambiente do usuário):

CYGWIN

Basicamente, é uma falha no mingw32 usada pelo binário do git windows, vendo todos os arquivos 644 e todas as pastas 755 sempre. A remoção da variável de ambiente não altera esse comportamento, mas aparentemente diz ao ssh.exe para ignorar o problema. Se você definir permissões apropriadas para o seu id_rsa por meio das configurações de segurança dos exploradores (realmente não há necessidade de ter nenhum outro usuário além do seu, não "todos", "administradores", "sistema". Nenhum. Apenas você) , você ainda estará seguro.

Agora, por que o mingw32, um sistema diferente do cygwin, faria qualquer uso da variável de ambiente CYGWIN, está além de mim. Parece um bug para mim.

Tuncay Göncüoğlu
fonte
3
Isto não funcionou para mim. Ainda recebo a mensagem "UNPROTECTED PRIVATE KEY FILE". Só queria que você soubesse caso alguém viesse a esse tópico com resultados semelhantes.
Luc
Trabalhou para mim. Isso é estúpido. Eu nem estou mais usando Cygwin. Além disso, como você descobriu isso?
gama
13

Estou no XP e isso permitiu ao Git Bash se comunicar com o Github (depois de muita frustração):

  1. copiar c:\cygwin\bin\cyg*(~ 50 arquivos) parac:\Program Files\Git\bin\
  2. copiar c:\cygwin\bin\ssh.exepara c:\Program Files\Git\bin\(substituição)
  3. Crie o arquivo que c:\Documents and Settings\<username>\.ssh\configcontém:

    Host github.com
        User git
        Hostname github.com
        PreferredAuthentications publickey
        IdentityFile "/cygdrive/c/Documents and Settings/<username>/.ssh/id_rsa"
    
  4. (opcional) Use ssh -v git@githubpara ver a conexão depurada.

  5. Tente um empurrão!

Antecedentes: O problema geral é uma combinação desses dois:

  • Erro: o mingw32 vê todos os arquivos como 644 (outros / legíveis por grupo), e nada que eu tentei no mingw32, cygwin ou Windows poderia corrigi-lo.
  • A versão SSH do mingw32 não permitirá isso para chaves privadas (geralmente uma boa política em um servidor).
Steve Clay
fonte
Ele emendas há necessidade de fazer backup de um arquivo c:\Documents and Settings\<username>\.ssh\configdesde que você tenha substituído c:\Program Files\Git\bin\ssh.exe com c:\cygwin\bin\ssh.exe. Certo ?
爱国者
Concordo com o comentário "muita frustração". Para o gitolite, segui estas etapas, copiando o cygwin / bin / cyg * para o meu dir Git (PortableGit - ou - Arquivos de Programas / Git) e descobri que poderia usar o git do Git-Bash, mas não o bash do cygwin. Adicionar os diretórios bin PortableGit e Cygwin ao meu PATH também funcionou com sucesso limitado ... mas ainda assim tive que mover o PortableGit / bin / ssh.exe {,. Bak} para que não fosse usado acidentalmente (mesmo que seja o mesmo que c: /cygwin/bin/ssh.exe). Basicamente, o ssh.exe precisa ser executado no diretório cygwin devido a outras dependências que não foram copiadas.
michael
Embora esteja funcionando para mim agora, o próximo a tentar seria adicionar Git e Cygwin ao PATH e mover o ssh.exe do Git para fora do caminho, para que o ssh.exe do cygwin seja usado (no diretório bin do cygwin).
michael
Adicione LogLevel DEBUGao arquivo .ssh \ config para obter a saída de depuração do processo ssh.exe iniciado pelo git.exe.
knb
Obrigado - esta solução funcionou para mim! Especificamente, de c: \ cygwin \ bin \ copiei ssh.exe, cygcrypto-0.9.8.dll, cygwin1.dll, cygminires.dll e cygz.dll para C: \ Arquivos de Programas \ Git \ bin \.
nexus-bytes
10

Para o Windows 7 usando o Git encontrado aqui (ele usa MinGW, não Cygwin):

  1. No Windows Explorer, clique com o botão direito do mouse no arquivo id_rsa e selecione Propriedades
  2. Selecione a guia Segurança e clique em Editar ...
  3. Marque a caixa Negar ao lado de Controle total para todos os grupos, EXCETO Administradores.
  4. Repita o comando Git
Brett Pennings
fonte
1
Era isso para mim, mas agora tenho um novo problema que o ssh não gosta da minha senha, qualquer senha que forneça ao meu arquivo de chave.
Jason Southwell
7

OK, aqui está como eu realmente forcei a alteração nos meus arquivos do Windows em relação às permissões no Win7: Encontre sua chave ssh no Windows Explorer: C: \ Users [your_user_name_here] .ssh \ id_rsa

Clique com o botão direito do mouse em arquivo> Propriedades> guia Segurança> botão Avançado> Alterar permissões

Agora remova todos os que não são realmente o seu nome de usuário. Isso inclui usuários Administrador e Sistema. Nesse ponto, você pode ter um diálogo sobre a herança de permissões - escolha a opção que NÃO herda - já que queremos apenas alterar este arquivo.

Clique em OK e salve até terminar.

Eu briguei com isso por dias porque minhas janelas não alteravam as permissões de arquivo na linha de comando. Dessa forma, também é REALMENTE feito - em vez de usar soluções emocionantes que podem ter consequências estranhas.

diannaL
fonte
6

Alterar as permissões de arquivo das Propriedades, desativar a herança e executar o chmod 400 não funcionou para mim. As permissões para o meu arquivo de chave privada foram:

-r - r ----- 1 alex Nenhum 1766 8 de mar 13:04 /home/alex/.ssh/id_rsa

Então eu notei que o grupo era Nenhum, então eu apenas corri

chown alex: Administradores ~ / .ssh / id_rsa

Então eu poderia alterar com êxito as permissões com o chmod 400 e executar um git push.

alex.m
fonte
4

PARA USUÁRIOS DE MAC:

Altere as configurações do seu arquivo de par de chaves digitando isto no terminal:

chmod og-r *filename.pem*

(verifique se você está no diretório correto ou no nome do arquivo do caminho no comando corretamente).

Andrew
fonte
3

Eu resolvo executando:

chmod 400 ~/.ssh/id_rsa

Espero ajudar. Boa sorte.

CristianOrellanaBak
fonte
1
Alterar as permissões para 400, como Cristian mencionou, seria mais seguro.
SylvesterAbreuLoreto
2

Depois de me deparar com o problema recentemente e este ser um dos principais resultados do Google, pensei em incluir um trabalho simples documentado em discussão aqui: http://code.google.com/p/msysgit/issues/detail?id = 261 # c40

Simplesmente envolve sobrescrever o mysys ssh.exe com o cygwin ssh.exe

chriskhan
fonte
2

Eu tive o mesmo problema no Windows XP recentemente. Tentei chmod 700 no meu arquivo ~ / .ssh / id_rsa, mas ele não parecia funcionar. Quando dei uma olhada nas permissões usando ls -l no ~ / .ssh / id_rsa, pude ver que minhas permissões efetivas ainda eram 644.

Lembrei-me de que as permissões do Windows também herdam as permissões das pastas, e a pasta ainda estava aberta a todos. Uma solução poderia ser definir permissões para a pasta também, mas acho que uma maneira melhor seria dizer ao sistema para ignorar a herança desse arquivo. Isso pode ser feito usando a opção avançada na guia segurança nas propriedades do arquivo e desmarcando "herdar das permissões pai ..."

Isso pode ser útil para outras pessoas com o mesmo problema.

daramarak
fonte
1

Estou jogando agora com o Git 1.6.5 e não consigo replicar sua configuração:

Administrator@WS2008 /k/git
$ ll ~/.ssh
total 8
drwxr-xr-x    2 Administ Administ     4096 Oct 13 22:04 ./
drwxr-xr-x    6 Administ Administ     4096 Oct  6 21:36 ../
-rw-r--r--    1 Administ Administ        0 Oct 13 22:04 c.txt
-rw-r--r--    1 Administ Administ      403 Sep 30 22:36 config_disabled
-rw-r--r--    1 Administ Administ      887 Aug 30 16:33 id_rsa
-rw-r--r--    1 Administ Administ      226 Aug 30 16:34 id_rsa.pub
-rw-r--r--    1 Administ Administ      843 Aug 30 16:32 id_rsa_putty.ppk
-rw-r--r--    1 Administ Administ      294 Aug 30 16:33 id_rsa_putty.pub
-rw-r--r--    1 Administ Administ     1626 Sep 30 22:49 known_hosts

Administrator@WS2008 /k/git
$ git clone [email protected]:alexandrul/gitbook.git
Initialized empty Git repository in k:/git/gitbook/.git/
remote: Counting objects: 1152, done.
remote: Compressing objects: 100% (625/625), done.
remote: Total 1152 (delta 438), reused 1056 (delta 383)s
Receiving objects: 100% (1152/1152), 1.31 MiB | 78 KiB/s, done.
Resolving deltas: 100% (438/438), done.

Administrator@WS2008 /k/git
$ ssh [email protected]
ERROR: Hi alexandrul! You've successfully authenticated, but GitHub does not pro
vide shell access
Connection to github.com closed.

$ ssh -v
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007

O chmod também não modifica as permissões de arquivo para minhas chaves.

Meio Ambiente:

  • Windows Server 2008 SP2 em NTFS
  • usuário: administrador
  • vars do ambiente:
    • PLINK_PROTOCOL = ssh
    • HOME = / c / perfis / home

Atualização: O Git 1.6.5.1 também funciona.

alexandrul
fonte
interessante. Parece que você está usando a opção de massa de vidraceiro?
Ben Scheirman 13/10/2009
1

Esse é um problema particularmente envolvido no Windows, onde não basta apenas chmod os arquivos corretamente. Você precisa configurar seu ambiente.

No Windows, isso funcionou para mim:

  1. Instale o cygwin.

  2. Substitua o msysgit ssh.exe pelo ssh.exe do cygwin.

  3. Usando cygwin bash, chmod 600 o arquivo de chave privada, que era "id_rsa" para mim.

  4. Se ainda assim não funcionar, vá para Painel de Controle -> Propriedades do Sistema -> Avançado -> Variáveis ​​de Ambiente e adicione a seguinte variável de ambiente. Em seguida, repita a etapa 3.

    Valor variável
    CYGWIN sbmntsec

Michael Bosworth
fonte
1

Consegui consertar isso fazendo duas coisas, embora você não precise executar a etapa 1.

  1. copiar do cygwin ssh.exe e de todos os cyg * .dll no diretório bin do Git (isso pode não ser necessário, mas é um passo que eu dei, mas isso não resolveu nada)

  2. siga as etapas em: http://zylstra.wordpress.com/2008/08/29/overcome-herokus-permission-denied-publickey-problem/

    Adicionei alguns detalhes ao meu arquivo ~ / .ssh / config:

Host heroku.com
Nome do host heroku.com
Porta 22
IdentitiesOnly sim
IdentityFile ~ / .ssh / id_heroku
TCPKeepAlive yes
Usuário brandon

Eu tive que usar o usuário como meu endereço de e-mail no heroku.com Nota: isso significa que você precisa criar uma chave, eu a segui para criar a chave e, quando ele solicitar o nome da chave, não deixe de especificar id_heroku http: / /help.github.com/win-set-up-git/

  1. adicione a chave:
    heroku keys: add ~ / .ssh / id_heroku.pub
Christy Hotney
fonte
1

O que fez o truque para mim foi atualizar a variável de ambiente CYGWIN com: " tty nodosfilewarning ". Nem precisava chmod a chave.

tohokami
fonte
0

Não é uma resposta direta à pergunta principal, mas à sua pergunta sobre como a pasta do cygwin funciona ... Como regra geral, o cygwin coloca todos os arquivos "your" sob o equivalente a c: \ cygwin \ home \ username. Ele trata essa pasta para qualquer configuração específica do usuário, e não para o diretório de usuário do Windows.

J Wynia
fonte
0

A menos que haja uma razão pela qual você queira manter esse par de chaves públicas / privadas (id_rsa / id_rsa.pub) ou aproveite para bater de cabeça na parede, recomendo apenas recriá-las e atualizar sua chave pública no github.

Comece fazendo uma cópia de backup do seu diretório ~ / .ssh.

Digite o seguinte e responda "y" se deseja sobrescrever os arquivos existentes.

ssh-keygen -t rsa

Copie o conteúdo da chave pública na sua área de transferência. (Abaixo está como você deve fazê-lo em um Mac).

cat ~/.ssh/id_rsa.pub | pbcopy

Vá para sua conta no github e adicione essa chave.

Name: My new public key
Key: <PASTE>

Saia do seu terminal e reinicie um novo.

Se você receber mensagens de erro sem sentido como "Digite sua senha" para sua chave pública quando você nunca inseriu uma, considere esta técnica de novo. Como você vê acima, não é complicado.

l3x
fonte
0

Eu nunca consegui fazer o git funcionar completamente no Powershell. Mas no shell do git bash não tive nenhum problema relacionado à permissão e não precisei configurar o chmod etc ... Depois de adicionar o ssh ao Github, eu estava em funcionamento.

Sam Kenny
fonte
0

Digite no terminal:

chmod -Rf 700 ~/.ssh/

E tente novamente.

João Paulo Cercal
fonte
0

Você copiou o arquivo de chave de outra máquina?

Acabei de criar um id_rsaarquivo na máquina cliente e colei a chave que eu queria. Sem problemas de permissão. Nada para definir. Apenas funcionou. Também funciona se você usar o PuTTYgen para criar a chave privada.

Possivelmente algum problema de grupo oculto, se você o estiver copiando de outra máquina.

Testado em duas máquinas Windows 8.1. Usando o Sublime Text 3 para copiar e colar a chave privada. Usando o Git Bash (Git-1.9.4-preview20140611).

PhilT
fonte
0

Depois de atualizar minha instalação do Cygwin para uma versão em fevereiro de 2015 ( 1.7.34(0.285/5/3) 2015-02-04 12:14 x86_64 Cygwin), repentinamente me deparei com o UNPROTECTED PRIVATE KEY FILEaviso.

Corrigi esse problema depois de executar o seguinte comando:

setfacl -s u::rw-,g::---,o:--- ~/.ssh/id_rsa

( outra resposta para outra pergunta fornece mais contexto)

Abdull
fonte
0

A resposta do @ koby não funciona para mim, então faço uma pequena alteração.

cd ~/.ssh
chmod 700 id_rsa.pub

Isso funciona bem para mim no Mac.

Han Pengbo
fonte
0

Eu tive o mesmo problema no Windows 10, onde tentei fazer o SSH em uma caixa do Vagrant. Isso parece um bug na versão antiga do OpenSSH. O que funcionou para mim:

  1. Instale o OpenSSH mais recente em http://www.mls-software.com/opensshd.html
  2. where.exe ssh

(Observe o ".exe" se você estiver usando o Powershell)

Você pode ver algo como:

C:\Windows\System32\OpenSSH\ssh.exe
C:\Program Files\OpenSSH\bin\ssh.exe
C:\opscode\chefdk\embedded\git\usr\bin\ssh.exe

Observe que no exemplo acima, o OpenSSH mais recente é o segundo no caminho, portanto não será executado.

Para alterar a ordem:

  1. Clique com o botão direito do mouse no botão Windows -> Configurações -> "Editar as variáveis ​​de ambiente do sistema"
  2. Na guia "Avançar", clique em "Variáveis ​​de ambiente ..."
  3. Em Variáveis ​​do sistema, edite "Caminho".
  4. Selecione "C: \ Arquivos de programas \ OpenSSH \ bin" e "Mover para cima" para que apareça na parte superior.
  5. Clique OK
  6. Reinicie seu console para que as novas variáveis ​​de ambiente possam ser aplicadas.
Jasper Citi
fonte
0

Meu sistema está um pouco confuso com bash / cygwin / git / msysgit / talvez-mais ...

chmodnão teve efeito na chave ou no configarquivo.

Decidi abordá-lo no Windows, que funcionou.

  1. Clique com o botão direito do mouse no arquivo cuja permissão precisa ser corrigida.
  2. Selecione Properties.
  3. Selecione a Securityguia
  4. Clique Advancedperto da parte inferior.
  5. Clique em Change, próximo ao Ownertopo.
  6. Digite "My-Awesome-Username" (obviamente mude para o seu nome de usuário atual do Windows) e clique Check Namesem OK.
  7. Em Permission entries:, destaque cada usuário que não seja "Meu nome de usuário impressionante" e selecione Remove. Repita isso até que "Meu nome de usuário impressionante" seja o único que resta.
  8. Selecione "My-Awesome-Username" e clique Editabaixo.
  9. Verifique se a Type:parte superior está definida como Allowe marque a caixa de seleção ao lado de Full control.
  10. Hit OK, Apply, OK, OK.

  11. Experimente novamente agora ...

Parece que às vezes o mock-bash não pode controlar a propriedade do arquivo. É especialmente estranho, pois é gerado a partir de um script de mock-bash. Vai saber.

Jack_Hu
fonte
0

Nenhuma das soluções alternativas sugeridas aqui (chmod / chgrp / setfacl / windows perms) funcionou para mim com o msys64 em uma VM corporativa do Windows 7. No final, resolvi o problema usando um agente ssh com a chave fornecida no stdin. Adicionando isso ao meu .bash_profiletorna o padrão para o meu login:

eval $(ssh-agent -s)
cat ~/.ssh/id_rsa | ssh-add -k -

Agora eu posso fazer git push e pull com controles remotos ssh.

Andy Brown
fonte