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
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
28
19
12
6
Advertisement
Advertisement