web-dev-qa-db-ja.com

Windows 10上のUbuntu - SSH「秘密鍵に対するパーミッションxxxxがオープンになっています」

ローカルディスクCにある.pemファイルがあります。 "c/private-key.pem"そしてUbuntuサブシステムではソフトリンクがあります。 "〜/ .ssh/private-key.pem - >/mnt/c/private- key.pem "

そして、Ubuntuサブシステムからリモートマシンへのアクセスを試みると、次のようになります。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for '/home/artur/.ssh/private-key.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/home/artur/.ssh/private-key.pem": bad permissions
Permission denied (publickey).

Windows用の1803アップデート後に開始されました。

Cドライブのキーとサブシステムの./sshフォルダにchmod 400を使用しようとしました。そしてこのファイルキーの所有者を私だけに設定し、他のすべてのユーザーをWindowsのセキュリティパネルから削除しようとしていました。しかし、私はいつも"Permissions XXXX for '/home/artur/.ssh/private-key.pem' are too open" or "Permission denied"を手に入れた。

誰かが私を助けて、WindowsとUbuntuサブシステムでキーパーミッションをどのように設定すべきか説明できますか?

11
Artur Cherniak

Windows WSLで(ファイルモードを変更せずに)私のために働く解決策:

Sudo ssh -i keyfile <user>@ip
7
anand

SSHキーを600/400以外のアクセス権を持つSSHキーとして使用すると、SSHキーをWSLの~/.sshディレクトリにコピーします。

  • キーがコピーされたら、そのEOLがLFに変更されていることを確認します。

    • これを行うには、 Atomテキストエディタ からdos2unixunix2dosなどのCLIソリューションまで、さまざまな方法があります。
  • Windowsでパーミッションを変更できない理由を理解するには、下記の@ simpleuser の回答 を参照してください。そのため、キーをWSLの~/.sshディレクトリにコピーする必要があります。

4
JW0914

行間を読み、Windows 10でLinuxサブシステムを使用していると仮定します。$ HOME/.sshでC:\からLinuxファイルシステムにWindowsファイルをシンボリックリンクしたとき、実際のファイルのパーミッションはそれでもWindowsの制御下にあり、Linuxウィンドウに表示されるアクセス権は、Windowsのアクセス権を表すのに最適です。 Linuxから/ mnt/cにあるWindowsファイルのアクセス権を変更することはできません。 MicrosoftのこのFAQ は、重複する2つのファイルシステムでファイルがどのように処理されるかについて説明しています。

パーミッションを変更する必要があるファイルはシンボリックリンクが指しているファイルなので、/ mnt/cにあるファイルを意味します。

ユーザーのみにWindowsファイルへのアクセス権を付与することは不可能に思われます。たとえあなたがファイルのパーミッション継承を無効にしてあなた自身のユーザだけに読み取りパーミッションを与えたとしても、Linuxパーミッションはまだ-r - r - r--のように表示されるので、.sshには使えません

唯一の選択肢は、ファイルをWindowsからLinuxにコピーすることであるように見えます。その時点で、chmodを使用してそこにchownすることができます。

3
simpleuser