Windows SSH: ‘private-key’ の権限がオープンすぎる

openssh permissions private-key ssh windows

私はテストのために Windows 7 に OpenSSH 7.6 をインストールしています。このWindowsからAWSのEC2ボックスにアクセスしようとするまでは、SSHクライアントとサーバは問題なく動作していました

秘密鍵ファイルのパーミッションを変更する必要があるようです。これは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 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:\>

  185  Sabrina  2018-02-18


ベストアンサー

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

所有者を自分に変更し、継承を無効にして、すべてのパーミッションを削除します。その後、自分自身に “Full control “を付与し、パーミッションを保存します。これで、SSHはもうファイルのパーミッションがあまりにも開いていることについて文句を言うことはありません

最終的にはこんな感じになるはずです

enter image description here

240  iBug  2018-02-18


キーは、それらが意図されたユーザーのみがアクセスできるものであり、他のアカウント、サービス、またはグループにはアクセスできません

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


  • CLI:

     :: # Set Variable ::
    Set Key="C:\Path\to\keyfile"
    
    :: # 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%
    

57  JW0914  2018-06-08


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

sudo ssh ...

で、それが功を奏して

29  Parv Sharma  2018-09-08


私も同じような問題を抱えていましたが、私は仕事場にいて、仕事場のコンピュータでファイルのパーミッションを変更する機能を持っていませんでした。あなたがする必要があることは、WSLをインストールしてから、あなたの鍵をWSLの隠されたsshディレクトリにコピーすることです

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

これで普通にパーミッションを変更できるようになるはずです

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

その後、WSLを使ってsshします

ssh -i ~/.ssh/<name of your key> <username>@<ip address>

16  JKauffman  2019-09-06


2つのことをするだけでいいんです

  1. Disable inheritance

    enter image description here

  2. 継承された権限を明示的な権限に変換します

    enter image description here

  3. ユーザーグループの削除

    enter image description here

  4. あなたは、ユーザーがプライベートファイルにアクセスすることができませんで終わるでしょう、これはid_rsaを追加するのに十分である必要があります

    enter image description here

11  Artur Mustafin  2019-02-16


これはあなたが実行している OpenSSH のバージョンに関係しているようです

  • where ssh 返します。
    %WinDir%\System32\OpenSSH\ssh.exe %ProgramFiles%\Git\usr\bin\ssh.exe

    ssh -V は戻ります。

    # %WinDir%\System32\OpenSSH\ssh.exe OpenSSH_7.5p1, without OpenSSL # %ProgramFiles%\Git\usr\bin\ssh.exe OpenSSH_7.3p1, OpenSSL 1.0.2k 26 Jan 2017

..\Git\usr\bin\ssh.exeを実行しても問題なく動作し、パーミッションについても文句を言わないのですが、..\OpenSSH\ssh.exeを実行すると、キーとなるACLが自分用のフルアクセスになっていて、他には何もないのに、以下のようになってしまいます

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

8  Rich S  2018-04-05


あなたのキーに以下のコマンドを使用して、それはWindowsで動作します

icacls .\private.key /inheritance:r
icacls .\private.key /grant:r "%username%":"(R)"

7  Walter Ferrao  2019-10-04


Windowsではchmodの代わりにicaclsを使ってファイルのパーミッションを調整することができます。現在のユーザーに読み取り権限を与え、それ以外のすべてを削除するには

Icacls <file name> /Inheritance:r
Icacls <file name> /Grant:r "%Username%":"(R)"

4  manjuv  2019-08-12


こちら で説明したように、パーミッションを変更する代わりに stdin からキーを追加します

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

チェックキーを追加しました

ssh-add -l

1  majom  2019-11-28


これは@JW0914さんのCLIの回答をスクリプト化しただけのものなので、まずは彼にupvoteしましょう

# 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 "$env:userprofile\.ssh" -Force

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

# Verify:
$sshFiles | % {
icacls $_
}

1  bbarker  2019-10-03


私は許可の問題でこれらの回答のどれも私のために動作するようにすることができませんでしたので、私の解決策を共有します

  1. %UserProfile%\.sshに移動します
  2. id_rsaをコピペして、他のものに名前を変えて[example]にしてください
  3. 名前を変更したファイル[example]を開き、鍵を自分の秘密鍵に置き換えます
  4. cdをそのディレクトリに移動します
  5. 発行後にパスフレーズを入力します。ssh -i example example@127.0.0.1

1  isopach  2020-02-24


  1. 公開鍵と秘密鍵を%userprofile%\.sshにコピーします
  2. where *.pubでcmdプロンプトからキーを見つけた後、以下のバッチスクリプトを使用してください。
    Md %Userprofile%\.ssh Copy PublicKey %Userprofile%\.ssh Copy PrivateKey %Userprofile%\.ssh Cd %Userprofile%\.ssh Icacls .\PublicKey /Inheritance:r Icacls .\PrivateKey /Inheritance:r Icacls .\PublicKey /Grant:r "%Username%":"(F)" Icacls .\PrivateKey /Grant:r "%Username%":"(F)"
  3. 各ファイルを右クリック→プロパティ→セキュリティ ユーザー以外を削除し、ユーザーのパーミッションを「読む」に設定します

1  Lynn Edmiston  2020-04-17


  1. OpenSSH-Win64.zip(システムによってはWin32)をダウンロードして解凍してください
  2. PowerShellで管理者権限でFixUserFilePermissions.ps1を実行してください

0  ganxiyun  2020-03-14


マイクロソフトのツールを使用して、問題を回避する方法をご紹介します。しかし、それは問題を修正する必要があり、既存のキーでこれらの指示に従うことができることを意味します

管理者としてPowerShell/ターミナルを起動し、以下を実行します

Install-Module -Force OpenSSHUtils -Scope AllUsers

# Make sure the service isn't disabled
Get-Service -Name ssh-agent | Set-Service -StartupType Manual

# We need this service as ssh-add depends on it
Start-Service ssh-agent

cat ~\.ssh\example-key.ecdsa | ssh-add -k -

0  Louis Waweru  2020-10-28


Use Mingw-w64.

情報。http://mingw-w64.org/doku.php

Windows版のGitでダウンロードするか、直接ダウンロードしてください

こちらでご利用いただけます。https://github.com/mirror/mingw-w64

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

他にもtargzipのような便利なLinuxコマンドもあります

-1  Dallas Clarke  2019-10-29


私はWindowsユーザーで、Windowsのbashを使っていて、WindowsのGUIを使ってパーミッションを設定するためにすべての手順を踏んでいるのですが、それでもうまくいかずに文句を言ってきます

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

sshコマンドの前にsudoを追加したところ、うまくいきました。他の方の参考になれば幸いです

-1  Alex Ramses  2019-11-26


私はWindows 10で同じ問題を抱えていたし、私のマシンに2番目のユーザーアカウントを作成したときにそれが発生しました

その新しいユーザーは管理者でもあり、私のユーザーフォルダへのアクセス権を持っていたので、以下の手順で.sshフォルダへのアクセスを制限しました

  1. C:\Users\YOUのユーザーフォルダに移動します
  2. .ssh/フォルダを右クリックしてコンテキストメニューを開きます
  3. Give access to...サブメニューでRemove accessを選択します
  4. Done!

今すぐ、ssh を使ってリモートコンピュータにログインしてみてください!

誰かのお役に立てれば幸いです

-1  khalifmahdi  2020-05-15


回答 by iBugは正常に動作します!あなたはそれに従うことができ、この問題を取り除くことができます。あなたはそれに従うことができ、この問題を取り除くことができます

しかし、私はパーミッションの設定中に問題に直面し、それは私が問題を把握するために数分かかりましたので、クリアする必要があるいくつかのものがあります

iBugさんの回答に続いて、すべてのパーミッションを削除しますが、どのように自分自身にフルコントロールパーミッションを設定するのですか? それは私がそれを行う方法を知らなかったので、私は最初に行き詰った場所です

継承を無効にした後、許可されたユーザーやグループをすべて削除できるようになります

一度それで完了したら

Addをクリックし、Set a Principalをクリックし、下の欄にSystemAdministratorsyour email addreddを入力し、check namesをクリックします

ユーザーが存在すれば名前を読み込んでくれます。そして、OK > Allow > Basic Permisisons Full Control > Okayをクリックします

これにより、SYSTEM、管理者、およびユーザーへのフルコントロール権限が設定されます

その後、その鍵を使ってsshしてみてください。これで解決するはずです

私も同じ問題を抱えていましたが、この方法で解決しました。その名前を持つユーザーやグループがあれば、それを読み込んでくれます

-Screenshots-

権限入力 校長の選択/ユーザまたはグループの選択 校長の選択

-2  lazycipher  2019-02-08


タイトルとURLをコピーしました