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

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

Advertisement

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

秘密鍵ファイルのパーミッションを変更する必要があるようです。これはunix/linuxではchmodコマンドで簡単にできます。

windowsの場合は?

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

回答 (14)

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

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

所有者を自分に変更し、継承を無効にし、全てのパーミッションを削除します。そして、自分に「Full control」を付与し、パーミッションを保存します。これでSSHはファイルのパーミッションが開きすぎても文句を言わなくなりました。

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

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

キーにアクセスできるのは、目的とするユーザーのみであり、他のアカウント、サービス、またはグループにはアクセスできないようにしてください。

  • GUI:
  • [ファイル]プロパティ - セキュリティ - 詳細
  • Ownerをキーのユーザーに設定する
  • 2. Permission Entries の下の、キーのユーザーを除くすべてのユーザー、グループ、およびサービスを削除する。鍵のユーザーを **Full Control_**

に設定します。

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

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

sudo ssh ...

を実行してみたところ、正常に動作しました。

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

私も同じ問題がありましたが、実行している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
banana@127.0.0.127: Permission denied (publickey).

ps. ファイルのパーミッションは自分だけがフルアクセスしているだけで、他には何もありません。

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

Windows

icacls .\private.key /inheritance:r
icacls .\private.key /grant:r "%username%":"(R)"
```で動作するキーに以下のコマンドを使用してください。
4
4
4
2019-09-06 18:17:27 +0000

私も同じような問題を抱えていましたが、仕事中だったので、仕事用のコンピュータのファイルパーミッションを変更する機能がありませんでした。何をする必要があるかというと、 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>
3
Advertisement
3
3
2019-02-16 21:58:34 +0000
Advertisement

必要なことは2つだけです。

1) Disable inheritance

2) Convert inherited permissions to explicit permissions

3) Remove Users group

4) You will end up to no Users can access private files, this should be enough to add id__rsa.

.

2
2
2
2019-08-12 12:39:01 +0000

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

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

これは @JW0914 さんの CLI の回答をスクリプト化したものです。また、これは私の初めてのPowerShellスクリプトなので、提案を歓迎します。

# 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

つまり、パーミションを変更する代わりに標準入力からキーを追加します。

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

キーが追加されたかどうかをチェックするには:

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

Mingw-w64 を使用します。

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

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

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

私はWindowユーザーで、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を追加したところ、正常に動作するようになりました。他の方の参考になれば幸いです。

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

パーミッションの問題でどの回答もうまくいかなかったので、私の解決策をシェアします。

C:\Users\UserName.ssh

  1. 2. id_rsaファイル

をコピーして貼り付ける 3. 3. ファイル名を他の名前に変更する(例:example

  1. リネームしたファイル example を開き、鍵を自分の秘密鍵

に置き換える 5. そのディレクトリに cd

  1. ssh -i example example@127.0.0.1を行い、パスワードを入力します。
-1
-1
-1
2019-02-08 14:20:33 +0000

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

しかし、パーミッションの設定中に問題に直面し、問題を解決するのに数分かかりましたので、クリアしなければならないことがいくつかあります。

iBugの回答に従って、全てのパーミッションを削除しますが、どうやって自分自身にフルコントロールパーミッションを設定するのでしょうか? これは、どうすればいいのか分からなかったので、最初はそこで行き詰ってしまいました。

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

これで完了したら、

Addをクリックして、下の欄にSet a PrincipalSystemAdministratorsを入力してyour email addreddをクリック。

ユーザーが存在すれば名前が読み込まれます。Next, Click on check names ¶> Type OK ¶> Basic Permisisons Allow ¶> Full Control

これで、SYSTEM,Administrators,Your UserへのFull Control権限が設定されます。

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

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

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

Advertisement

関連する質問

3
10
28
19
12
Advertisement