私はテストのために 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はもうファイルのパーミッションがあまりにも開いていることについて文句を言うことはありません
最終的にはこんな感じになるはずです
240 iBug 2018-02-18
キーは、それらが意図されたユーザーのみがアクセスできるものであり、他のアカウント、サービス、またはグループにはアクセスできません
- GUI:
- ファイル]プロパティ – セキュリティ – 詳細
- オーナーを鍵のユーザーに設定します
- 許可エントリの下にある、鍵のユーザーを除くすべてのユーザー、グループ、およびサービスを削除します
- キーのユーザーをフルコントロールに設定します
- ファイル]プロパティ – セキュリティ – 詳細
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つのことをするだけでいいんです
Disable inheritance
継承された権限を明示的な権限に変換します
ユーザーグループの削除
あなたは、ユーザーがプライベートファイルにアクセスすることができませんで終わるでしょう、これはid_rsaを追加するのに十分である必要があります
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
私は許可の問題でこれらの回答のどれも私のために動作するようにすることができませんでしたので、私の解決策を共有します
%UserProfile%\.ssh
に移動しますid_rsa
をコピペして、他のものに名前を変えて[example
]にしてください- 名前を変更したファイル[
example
]を開き、鍵を自分の秘密鍵に置き換えます cd
をそのディレクトリに移動します- 発行後にパスフレーズを入力します。
ssh -i example example@127.0.0.1
1 isopach 2020-02-24
- 公開鍵と秘密鍵を
%userprofile%\.ssh
にコピーします 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)"
- 各ファイルを右クリック→プロパティ→セキュリティ ユーザー以外を削除し、ユーザーのパーミッションを「読む」に設定します
1 Lynn Edmiston 2020-04-17
OpenSSH-Win64.zip
(システムによってはWin32)をダウンロードして解凍してください- 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
他にもtar
やgzip
のような便利な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
フォルダへのアクセスを制限しました
C:\Users\YOU
のユーザーフォルダに移動します.ssh/
フォルダを右クリックしてコンテキストメニューを開きますGive access to...
サブメニューでRemove access
を選択します- Done!
今すぐ、ssh を使ってリモートコンピュータにログインしてみてください!
誰かのお役に立てれば幸いです
-1 khalifmahdi 2020-05-15
回答 by iBugは正常に動作します!あなたはそれに従うことができ、この問題を取り除くことができます。あなたはそれに従うことができ、この問題を取り除くことができます
しかし、私はパーミッションの設定中に問題に直面し、それは私が問題を把握するために数分かかりましたので、クリアする必要があるいくつかのものがあります
iBugさんの回答に続いて、すべてのパーミッションを削除しますが、どのように自分自身にフルコントロールパーミッションを設定するのですか? それは私がそれを行う方法を知らなかったので、私は最初に行き詰った場所です
継承を無効にした後、許可されたユーザーやグループをすべて削除できるようになります
一度それで完了したら
Add
をクリックし、Set a Principal
をクリックし、下の欄にSystem
とAdministrators
とyour email addredd
を入力し、check names
をクリックします
ユーザーが存在すれば名前を読み込んでくれます。そして、OK
> Allow
> Basic Permisisons Full Control
> Okay
をクリックします
これにより、SYSTEM、管理者、およびユーザーへのフルコントロール権限が設定されます
その後、その鍵を使ってsshしてみてください。これで解決するはずです
私も同じ問題を抱えていましたが、この方法で解決しました。その名前を持つユーザーやグループがあれば、それを読み込んでくれます
-Screenshots-
権限入力 校長の選択/ユーザまたはグループの選択 校長の選択
-2 lazycipher 2019-02-08