2018-02-18 05:10:44 +0000 2018-02-18 05:10:44 +0000
122
122

Windows SSH: As permissões para 'chave privada' são demasiado abertas

Tenho o OpenSSH 7.6 instalado no Windows 7 para fins de teste. O cliente e servidor SSH funcionam muito bem até tentar aceder a uma das minhas caixas AWS EC2 a partir desta janela.

Parece que preciso de alterar a permissão no ficheiro da chave privada. Isto pode ser feito facilmente em unix/linux com comando chmod.

E no windows?

a chave privada.ppm é copiada directamente da AWS e suponho que a permissão também.

C:\>ssh -V
OpenSSH_7.6p1, LibreSSL 2.5.3

C:\>ver

Microsoft Windows [Version 6.1.7601]

C:\>

C:\>ssh ubuntu@192.168.0.1 -i private-key.ppk
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for 'private-key.ppk' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "private-key.ppk": bad permissions
ubuntu@192.168.0.1: Permission denied (publickey).

C:\>
C:\>
C:\>ssh ubuntu@192.168.0.1 -i private-key.ppm
Warning: Identity file private-key.ppm not accessible: No such file or directory.
ubuntu@192.168.0.1: Permission denied (publickey).

C:\>

Respostas (14)

150
150
150
2018-02-18 08:57:27 +0000

Localiza o ficheiro no Explorador do Windows, clica com o botão direito do rato sobre ele e selecciona “Propriedades”. Navegue até ao separador “Segurança” e clique em “Avançado”.

Altere o proprietário para si, desactive a herança e elimine todas as permissões. Em seguida, conceda-se “Controlo total” e guarde as permissões. Agora o SSH já não se queixará das permissões de ficheiros demasiado abertos.

Deve acabar por ter este aspecto:

29
29
29
2018-06-08 15:34:57 +0000

As chaves só devem ser acessíveis ao utilizador a que se destinam e nenhuma outra conta, serviço, ou grupo.

  • GUI:
  • [Ficheiro] Propriedades - Segurança - Avançado
  • Definir Proprietário para o utilizador da chave
  • Remover todos os utilizadores, grupos e serviços, exceto para o utilizador da chave, em Entradas de autorização*
  • Definir o utilizador da chave para Controlo total*

  • CLI:

15
15
15
2018-09-08 13:27:16 +0000

Para além da resposta dada pelo ibug. Uma vez que eu estava a utilizar o sistema ubuntu dentro das janelas para executar o comando ssh. Ainda não estava a funcionar. Então eu fiz

sudo ssh ...

e depois funcionou

5
5
5
2018-04-05 11:53:43 +0000

Eu tinha o mesmo problema, e parece estar relacionado com a versão do SSH que estás a gerir.

Se eu digitar

where ssh

Eu recebo…

C:\Windows\System32\OpenSSH\ssh.exe
C:\Program Files\Git\usr\bin\ssh.exe

Quando corro ssh -V em ambos os locais, recebo

OpenSSH_7.5p1, without OpenSSL
OpenSSH_7.3p1, OpenSSL 1.0.2k 26 Jan 2017

…respectivamente

Assim, quando corro ssh a partir do directório git/bin, funciona bem e não se queixa das permissões, mas ao correr a mesma linha de comando, usando a instalação anterior do SSH, volta com isto.

Load key "t:\mykeys\rich-private.ppk": invalid format
banana@127.0.0.127: Permission denied (publickey).

ps. as permissões no ficheiro são apenas acesso total para mim, e nada mais.

5
5
5
2019-10-04 13:28:46 +0000

use o comando abaixo na sua chave funciona no windows

icacls .\private.key /inheritance:r
icacls .\private.key /grant:r "%username%":"(R)"
4
4
4
2019-09-06 18:17:27 +0000

Eu tinha um problema semelhante mas estava a trabalhar e não tenho a capacidade de alterar as permissões dos ficheiros no meu computador de trabalho. O que precisa de fazer é instalar WSL depois copiar a sua chave para o directório ssh oculto em WSL:

cp <path to your key> ~/.ssh/<name of your key>

Agora deverá ser capaz de modificar as permissões normalmente.

sudo chmod 600 ~/.ssh/<your key's name>

Depois ssh usando WSL:

ssh -i ~/.ssh/<name of your key> <username>@<ip address>
3
3
3
2019-02-16 21:58:34 +0000
2
2
2
2019-08-12 12:39:01 +0000

Pode usar icacls nas janelas em vez de chmod para ajustar a permissão do ficheiro. Para dar permissão de leitura ao utilizador actual e remover tudo o resto,

icacls <file name> /inheritance:r
icacls <file name> /grant:r "%username%":"(R)"
1
1
1
2019-10-03 21:07:46 +0000

Esta é apenas uma versão escrita da resposta CLI de @JW0914, pelo que o convocar primeiro e acima de tudo. É também o meu primeiro guião PowerShell, pelo que as sugestões são bem-vindas.

# DO the following in powerhsell if not already done:
# Set-ExecutionPolicy RemoteSigned

# NOTE: edit the path in this command if needed
$sshFiles=Get-ChildItem -Path C:\DevContainerHome\.ssh -Force

$sshFiles | % {
  $key = $_
  & icacls $key /c /t /inheritance:d
  & icacls $key /c /t /grant %username%:F
  & icacls $key /c /t /remove Administrator "Authenticated Users" BUILTIN\Administrators BUILTIN Everyone System Users
}

# Verify:
$sshFiles | % {
  icacls $_
}
1
1
1
2019-11-28 14:45:28 +0000

Uma única linha em CMD poderia fazer o truque (como descrito aqui: https://serverfault.com/a/883338/550334 ), ou seja, adicionar a chave de stdin em vez de alterar as permissons:

cat /path/to/permission_file | ssh-add -k

Para verificar se a chave foi adicionada:

ssh-add -l
0
0
0
2019-10-29 04:30:11 +0000

Usar Mingw-w64.

Infos: http://mingw-w64.org/doku.php

Descarregar com Git para Windows, ou directamente.

Disponível aqui: https://github.com/mirror/mingw-w64

git clone https://github.com/mirror/mingw-w64

& Tem também outros comandos Linux úteis como tar e gzip.

0
0
0
2019-11-26 06:10:29 +0000

Sou um utilizador do Window, usando a bash do Windows e segui todos os passos para definir a permissão usando o Windows GUI, e ainda não funciona e queixa-se:

Permissions 0555 for 'my_ssh.pem' are too open.
It is required that your private key files are NOT accessible by others.

O I adicionei sudo na frente do comando ssh e simplesmente funciona. Espero que isto seja útil para os outros.

0
0
0
2020-02-24 23:03:22 +0000

Não consegui obter nenhuma destas respostas a trabalhar para mim devido a questões de permissão, por isso vou partilhar a minha solução:

  1. Ir para C:\Users\UserName.ssh

  2. Copiar e colar o ficheiro id_rsa

  3. Renomeá-lo para outra coisa, por exemplo example

  4. Abrir o ficheiro renomeado example e substituir a chave pela sua própria chave privada

  5. cd para esse directório

  6. Faça ssh -i example example@127.0.0.1 e introduza a sua palavra-passe.

-1
-1
-1
2019-02-08 14:20:33 +0000

Resposta do iBug funciona bem! Pode seguir isso e ver-se livre deste problema.

Mas há poucas coisas que precisam de ser esclarecidas, pois enfrentei problemas durante o estabelecimento de permissões e demorei alguns minutos a descobrir o problema!

Seguindo a resposta do iBug, vai retirar todas as permissões, mas como é que define a permissão de Controlo Total para si próprio? foi aí que fiquei preso no início, pois não sabia como o fazer.

Depois de desactivar a herança, poderá apagar todos os utilizadores ou grupos permitidos.

Uma vez feito isso,

Clique em Add depois clique em Set a Principal depois introduza System e Administrators e your email addredd no campo no fundo e depois clique em check names.

Carregará o nome se o utilizador existir. Depois, clicar em OK > Tipo Allow > Permisões básicas Full Control > Okay

Isto irá configurar a permissão de Controlo Total ao SYSTEM, Administrators and Your User.

Depois disso, tente ssh usando essa chave. Deve ser resolvido agora.

Eu tinha o mesmo problema e resolvi-o usando este método. Se houver algum utilizador ou grupo com esse nome, então ele irá carregar isso.

-Screenshots- Entradas de Permissão Seleccionar um Principal/ Seleccionar Utilizador ou Grupos