web-dev-qa-db-ja.com

Windows SSH: 'private-key'の権限がオープンになっています

テスト目的で、OpenSSH 7.6をWindows 7にインストールしました。 SSHクライアントとサーバーは、このウィンドウから自分のAWS EC2ボックスの1つにアクセスしようとするまでは問題なく動作します。

秘密鍵ファイルの許可を変更する必要があるようです。これはunix/linuxでchmodコマンドを使えば簡単にできます。

窓はどうですか?

private-key.ppmはAWSから直接コピーされたもので、私もその許可を得たと思います。

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

C:\>ver

Microsoft Windows [Version 6.1.7601]

C:\>


C:\>ssh [email protected] -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
[email protected]: Permission denied (publickey).

C:\>
C:\>
C:\>ssh [email protected] -i private-key.ppm
Warning: Identity file private-key.ppm not accessible: No such file or directory.
[email protected]: Permission denied (publickey).

C:\>
54
Sabrina

あなたは、Windowsエクスプローラでファイルを見つけてそれを右クリックしそして「プロパティ」を選択します。 [セキュリティ]タブに移動して[詳細設定]をクリックします。

所有者をあなたに変更し、継承を無効にしてすべての権限を削除します。それからあなた自身に「フルコントロール」を与えて、許可を保存してください。これでSSHは、ファイルの許可がオープンしすぎていることを訴えなくなりました。

それは結局このように見えるはずです:

enter image description here

75
iBug

キーは、自分が意図しているユーザーのみがアクセス可能でなければならず、他のアカウント、サービス、またはグループはアクセスできません。

  • GUI:
    • [ファイル]プロパティ - セキュリティ - 詳細
      1. キーのユーザーにOwnerを設定します。
      2. の下にあるキーのユーザーを除いて、すべてのユーザー、グループ、およびサービスを削除する
      3. キーのユーザーをフルコントロールに設定します。


  • CLI:

    :: Set Variable ::
    set key="C:\Path\to\key"
    
    :: Remove Inheritance ::
    cmd /c icacls %key% /c /t /inheritance:d
    
    :: Set Ownership to Owner ::
    cmd /c icacls %key% /c /t /grant %username%:F
    
    :: Remove All Users, except for Owner ::
    cmd /c icacls %key%  /c /t /remove Administrator "Authenticated Users" BUILTIN\Administrators BUILTIN Everyone System Users
    
    :: Verify ::
    cmd /c icacls %key%
    
11
JW0914

私は同じ問題を抱えていました、そしてそれはあなたが実行しているSSHのバージョンに関連しているようです。

私がタイプすれば

where ssh

私は….

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

両方の場所でssh -Vを実行すると、

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

...それぞれ

だから、私がgit/binディレクトリからsshを実行するとき、それはうまく動いて、許可について不平を言いません、しかしSSHの以前のインストールを使用して同じコマンドラインを実行する、それは戻ってきます。

Load key "t:\\mykeys\\rich-private.ppk": invalid format
[email protected]: Permission denied (publickey).

ps。ファイルへのアクセス許可は私自身のためのフルアクセスにすぎず、それ以外には何もありません。

4
Rich S

Ibugによって提供された答えに加えて。私はsshコマンドを実行するために窓の中のubuntuシステムを使用していたので。それはまだ働いていませんでした。だから私はやった

Sudo ssh ...

そしてそれは働いた

4
Parv Sharma

あなたはjsut 2のものが必要です:

1)継承を無効にする enter image description here

2)継承した権限を明示的な権限に変換する enter image description here

3)Usersグループを削除します enter image description here

4)あなたは、ユーザがプライベートファイルにアクセスすることができなくなってしまうでしょう。これはid_rsaを追加するのに十分なはずです。 enter image description here

2
Artur Mustafin

ファイル許可を調整するために、chmodの代わりにWindowsでicaclsを使用できます。現在のユーザーに読み取り許可を与え、他のすべてを削除するには、

icacls <file name> /inheritance:r
icacls <file name> /grant:r "%username%":"(R)"
1
manjuv