Windowsから秘密鍵を使ってsshすると結構こうなります
> ssh user@hostname -i private_key
:
Permissions for '.\\private_key' 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": bad permissions
GUIからあれこれする方法もあるけれど面倒なのでこちら(Windows SSH: Permissions for 'private-key' are too open - Super User)を参考にPowershellの関数にしました。
function permission_key($key_path) {
# Set Key File Variable:
New-Variable -Name Key -Value "$key_path" # "$env:UserProfile\.ssh\id_rsa"
# Remove Inheritance:
Icacls $Key /c /t /Inheritance:d
# Set Ownership to Owner:
# Key's within $env:UserProfile:
Icacls $Key /c /t /Grant ${env:UserName}:F
# Key's outside of $env:UserProfile:
TakeOwn /F $Key
Icacls $Key /c /t /Grant:r ${env:UserName}:F
# Remove All Users, except for Owner:
Icacls $Key /c /t /Remove:g Administrator "Authenticated Users" BUILTIN\Administrators BUILTIN Everyone System Users
# Verify:
Icacls $Key
# Remove Variable:
Remove-Variable -Name Key
}
これを$profileあたりで宣言するとかしておきます。
使うと「処理できませんでした」と連発で出ますが、ちゃんと設定されます。
PS D:\(作業フォルダ)> permission_key(".\private_key")
処理ファイル: .\.vagrant\machines\default\virtualbox\private_key
1 個のファイルが正常に処理されました。0 個のファイルを処理できませんでした
処理ファイル: .\.vagrant\machines\default\virtualbox\private_key
1 個のファイルが正常に処理されました。0 個のファイルを処理できませんでした
成功: ファイル (またはフォルダー): "D:\(作業フォルダ)\private_key" は現在ユーザー "TONTORO-PC\(ユーザー名)" によって所有されています。
処理ファイル: .\private_key
1 個のファイルが正常に処理されました。0 個のファイルを処理できませんでした
処理ファイル: .\private_key
1 個のファイルが正常に処理されました。0 個のファイルを処理できませんでした
.\private_key TONTORO-PC\(ユーザー名):(F)
1 個のファイルが正常に処理されました。0 個のファイルを処理できませんでした