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

Windows SSH: i permessi per 'private-key' sono troppo aperti

Ho installato OpenSSH 7.6 in Windows 7 per scopi di test. Il client e il server SSH funzionano bene finché non ho provato ad accedere a uno dei miei box AWS EC2 da questa finestra.

Sembra che io debba cambiare il permesso sul file della chiave privata. Questo può essere fatto facilmente su unix/linux con il comando chmod.

E su windows?

private-key.ppm è copiato direttamente da AWS e immagino anche il permesso.

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:\>

Risposte (14)

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

Individuate il file in Windows Explorer, cliccate con il tasto destro e selezionate “Proprietà”. Vai alla scheda “Sicurezza” e clicca su “Avanzate”.

Cambia il proprietario a te, disabilita l'ereditarietà e cancella tutti i permessi. Poi concediti il “Controllo completo” e salva i permessi. Ora SSH non si lamenterà più del permesso di un file troppo aperto.

Dovrebbe finire per assomigliare a questo:

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

Le chiavi devono essere accessibili solo all'utente a cui sono destinate e a nessun altro account, servizio o gruppo.

  • GUI:
  • [File] Properties - Security - Advanced
  • Imposta Owner all'utente della chiave
  • Rimuovi tutti gli utenti, gruppi e servizi, eccetto l'utente della chiave, sotto Permission Entries
  • Impostare l'utente della chiave su Full Control

  • CLI:

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

Oltre alla risposta fornita da ibug. Dal momento che stavo usando il sistema ubuntu all'interno di Windows per eseguire il comando ssh. Ancora non funzionava. Così ho fatto

sudo ssh ...

e poi ha funzionato

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

Ho avuto lo stesso problema, e sembra essere legato alla versione di SSH che stai usando.

Se digito

where ssh

ottengo…

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

Quando eseguo ssh -V in entrambe le posizioni, ottengo

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

…rispettivamente

Quindi, quando eseguo ssh dalla directory git/bin, funziona bene e non si lamenta dei permessi, ma eseguendo la stessa linea di comando, usando la precedente installazione di SSH, ritorna con questo.

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

ps. i permessi sul file sono solo accesso completo per me, e nient'altro.

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

utilizzare il seguente comando sulla vostra chiave funziona su windows

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

Ho avuto un problema simile ma ero al lavoro e non ho la possibilità di cambiare i permessi dei file sul mio computer di lavoro. Quello che devi fare è installare WSL poi copiare la tua chiave nella directory ssh nascosta in WSL:

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

Ora dovresti essere in grado di modificare i permessi normalmente.

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

Poi 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

Potete usare icacls in windows invece di chmod per regolare i permessi dei file. Per dare il permesso di lettura all'utente corrente e rimuovere tutto il resto,

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

Questa è solo una versione scriptata della risposta CLI di @JW0914, quindi upvote lui prima di tutto. Inoltre, è il mio primo script PowerShell, quindi i suggerimenti sono benvenuti.

# 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

Una singola linea in CMD potrebbe fare il trucco (come descritto qui: https://serverfault.com/a/883338/550334 ), cioè aggiungere la chiave da stdin invece di cambiare i permessi:

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

Per controllare se la chiave è stata aggiunta:

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

Usa Mingw-w64.

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

Scarica con Git per Windows, o direttamente.

Disponibile qui: https://github.com/mirror/mingw-w64

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

Ha anche altri utili comandi Linux come tar e gzip.

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

Sono un utente Window, uso la bash di Windows e ho seguito tutti i passi per impostare i permessi usando la GUI di Windows, e ancora non funziona e si lamenta:

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

Ho aggiunto sudo davanti al comando ssh e funziona. Spero che questo sia utile ad altri.

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

Non sono riuscito a far funzionare nessuna di queste risposte per me a causa di problemi di autorizzazione, quindi condividerò la mia soluzione:

  1. Vai a C:\Users\UserName.ssh

  2. Copia e incolla il file id_rsa

  3. Rinominalo in qualcos'altro, per esempio example

  4. Aprite il file rinominato example e sostituite la chiave con la vostra chiave privata

  5. cd in quella directory

  6. Fate ssh -i example example@127.0.0.1 e inserite la vostra password.

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

Risposta di iBug funziona bene! Puoi seguirlo e sbarazzarti di questo problema.

Ma ci sono alcune cose che devono essere cancellate perché ho avuto problemi durante l'impostazione dei permessi e mi ci sono voluti pochi minuti per capire il problema!

Seguendo la risposta di iBug, rimuoverai tutti i permessi, ma come fai a impostare il permesso di Controllo completo su te stesso? È lì che mi sono bloccato all'inizio perché non sapevo come farlo.

Dopo aver disabilitato l'ereditarietà, sarai in grado di eliminare tutti gli utenti o gruppi autorizzati.

Una volta fatto questo,

Clicca su Add poi clicca su Set a Principal poi inserisci System e Administrators e your email addredd nel campo in basso poi clicca su check names.

Caricherà il nome se l'utente esiste. Poi, clicca su OK > Type Allow > Basic Permisisons Full Control > Okay

Questo imposterà il permesso di controllo completo a SYSTEM, Administrators e al tuo utente.

Dopo di che provate a fare ssh usando quella chiave. Ora dovrebbe essere risolto.

Ho avuto lo stesso problema e l'ho risolto usando questo metodo. Se c'è qualche utente o gruppo con quel nome, allora lo caricherà.

-Screenshots- Permission Entries Select a Principal/ Select User or Groups