Erro "Proprietário inválido ou permissões" usando o ssh.exe do Cygwin


29

Estou tentando usar o ssh.exe no Cygwin (no Windows 7). Copiei um configarquivo para c:\cygwin\home\[USERNAME]\.ssh. Quando executo ssh(por exemplo ssh -vT git@bitbucket.org), recebo o seguinte erro:

OpenSSH_5.9p1, OpenSSL 0.9.8r 8 de fev de 2011 Proprietário inválido ou permissões em /home/[USERNAME}/.ssh/config

Como faço sshpara ler meu arquivo de configuração?

Respostas:


46

Depois de fazer o que foi descrito acima, sempre obtive isso:

total 22
drwxrwxr-x+ 1 jl None    0 Sep  9 18:44 .
drwxrwxr-x+ 1 jl None    0 Sep  9 18:44 ..
-rw-rw----  1 jl None  129 Jul  1 14:30 config

e o erro ativado .ssh/config. Então, eu corri chownna .sshpasta e chmodnovamente assim:

> chown -R [USERNAME]:users .ssh/

e depois:

> chmod -R 600 .ssh/

e finalmente consegui:

total 29
drwxrwxr-x+ 1 jl None     0 Sep  9 18:44 .
drwxrwxrwt+ 1 jl None     0 Sep  9 18:44 ..
drw-------+ 1 jl Users    0 Sep  9 18:44 .ssh

Editar (para bash no Windows10)

Quando você receber o erro ..

Falha ao adicionar o host à lista de hosts conhecidos (/PATH_TO_HOME/USERNAME/.ssh/known_hosts).

Certifique-se de que known_hosts seja gravável

$ chmod 755 known_hosts

Nota: acredito que você só precisa definir 600 para sua chave privada

Então, tente ssh.

Quando você chegar ..

Adicionado permanentemente 'HOST_IP' (RSA) à lista de hosts conhecidos.

Você pode substituir o modo 600

$ chmod 600 known_hosts

PS : Eu acho que isso é um bug no Windows 8.


A resposta aceita não funcionou para mim, mas funcionou. Obrigado!
Achal Dave

Além disso, este é um bug bastante estranho. No meu computador (W8.1), editar o arquivo .ssh / config no Vim sempre leva a esse erro. É extremamente irritante, pois todas as alterações na minha configuração ssh exigem a execução desses comandos.
Achal Dave

4
E apenas para aumentar a estranheza, se você estiver usando uma versão não inglesa do Windows, use a tradução local de "usuários" ao emitir este comando. Por exemplo, em holandês, torna-se "chown -R: Gebruikers .ssh"
Alexander Kellett

1
Para mim, isso funcionou: chown -R m0j0: Usuários .ssh && chmod -R go-rwx .ssh
m0j0

1
Graças Isso funcionou para mim, bem como, em alemão você precisa usarchown -R [Username]:Benutzer .ssh/
con

20

Esta resposta é copiada literalmente em https://superuser.com/a/875934/82032 . Esta é a única resposta que funcionou para mim após uma recente atualização do cygwin.

Não esqueça as ACLs

Nada funcionou para mim até retirar o arquivo de ACLs e redefinir as permissões.

#remove ACLs
setfacl -b ~/.ssh/config

#reset permissions
chmod 0600 ~/.ssh/config

Você pode usar getfaclpara visualizar a ACL atual em um arquivo.

getfacl ~/.ssh/config

Antes de remover as ACLs (quebradas):

# owner: Administrators
# group: None
user::rw-
group::---
group:Authenticated Users:rwx
group:SYSTEM:rwx
mask:rwx
other:---

Depois de trabalhar)

# file: config
# owner: myusername
# group: None
user::rw-
group::---
other:---

Isto é o que eu tinha que fazer depois cygwin atualização
blockloop

1
Isso requer o cygwin 1.7.34-6
ClintM

Isto é o que funcionou para mim!
Ashutosh Jindal

9

Verifique as permissões do configarquivo usando o lscomando do Cygwin :

> c:\cygwin\bin\ls.exe -la c:\cygwin\home\[USERNAME]\.ssh

Provavelmente será algo como isto:

total 5
drwxrwxrwt+ 1 Administrators None  0 Oct 20 17:02 .
drwxr-xr-x+ 1 [USERNAME]     None  0 Oct 19 08:15 ..
-rw-------  1 Administrators None 57 Oct 20 16:58 config

O arquivo de configuração precisa pertencer a [USERNAME]. Tente o seguinte:

> c:\cygwin\bin\chown.exe [USERNAME] c:\cygwin\home\[USERNAME]\.ssh\config

ls -laagora deve mostrar o proprietário correto. Se isso ainda não funcionar, tente redefinir o modo (permissões):

> c:\cygwin\bin\chmod.exe 700 c:\cygwin\home\[USERNAME]\.ssh\config

9

Para unix e OSX

Muito simples:

chown -R $USER:users ~/.ssh/
chmod -R 600 ~/.ssh/

Para Windows

Se o arquivo for um link simbólico do Windows (NTFS), o procedimento acima não funcionará. Você precisa torná-lo um arquivo regular. Não sei por quê.

Se você não possui o openssh ou o cygwin, use o chocolatey para instalá-lo facilmente.

choco install cyg-get

Abra o Terminal Cygwin que foi instalado com chocolatey e execute (observe que ssh-keygencria novas chaves):

cyg-get install openssh
ssh-keygen
cd ~/.ssh && explorer.exe .

Verifique se as chaves estão lá (ou substitua-as pelas chaves que você deseja) e, em seguida, no shell Cygwin:

chown -R $USER:users ~/.ssh/
chmod -R 600 ~/.ssh/

Ou, no caso raro em que você está usando (e gerou as chaves) do pacote SSH do chocolatey :

chown -R $USER:users  /cygdrive/c/Users/$USER/.ssh
chmod -R 600 /cygdrive/c/Users/$USER/.ssh

Geralmente é isso para mim, já que o grupo geralmente está errado nos arquivos.
Alan Krueger

3

Nota importante se o Windows não estiver em inglês dos EUA: o nome do grupo "usuários" depende da localidade. Por exemplo, se o Windows estiver em espanhol, você precisará alterar a propriedade dos arquivos comchown $USER:Usuarios *


1

Nenhuma delas (chmod / chown / icacls / setacl / copyacls / explorer> segurança) funcionou no meu cygwin64 / win7 / admin; finalmente, isso funciona com cygwin64/ssh -F ~/.ssh/configoutras soluções: usar ssh mais antigo no cygwin32 ou ssh no git para windows ..


O uso -Fresolverá o problema com config, mas não resolverá as permissões para chaves privadas.
Jari Turkia 30/10

0

Para quem usa noaclno caminho com ~/.sshdir, a solução simples é criar um link simbólico NTFS nativo:

cmd# mklink c:\home\.ssh c:\opt\cygwin\home\misc\.ssh
symbolic link created for c:\home\.ssh <<===>> c:\opt\cygwin\home\misc\.ssh

Com, noaclnão há como definir permissões além de rwxr-xr-xou rw-r--r--. Como a /hierarquia deve estar sem noacl(ou deve estar com acl), você pode criar um diretório aqui e apontar para lugares problemáticos para os aplicativos do Cygwin.


1
Como esse é um diretório, a solução simples seria usar uma junção, porque isso não requer os privilégios necessários para definir um link simbólico. Isso seria mklink /jentão ou a junctionferramenta do Sysinternals Suite.
0xC0000022L 22/03

0

tldr: você pode ter criado a configuração como administrador

Solução

Essas soluções podem ser um exagero se você acabar criando o arquivo como administrador por engano e tentando usá-lo com permissões locais.

  • Copie o conteúdo da sua configuração ssh
  • Excluir o arquivo
  • Abra um novo shell (local - não administrador)
  • Navegue até o caminho em que sua configuração está armazenada ( geralmente ~/.sshno PowerShell ou %userprofile%\.sshno cmd )
  • Corre notepad .\config

Comandos simples (PowerShell):

$sshPath = '~/.ssh/config'
$content = cat $sshPath
# In case the line above fails, this check will prevent your current config to get deleted
if ($content) {
  rm $sshPath
  $content | Out-File -en ascii $sshPath
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.