WindowsでOpenSSHを使用してAmazon EC2に接続しようとしていますが、キーファイルのアクセス許可を設定する必要があります。
CHMOD 600
と同等のウィンドウは何ですか?
私は広範囲にグーグルで調べましたが、ブログスパムだけを見つけました。
編集:DOSを使用したWindows 7。
これはやや古いことはわかっていますが、Windows 7で解決策を見つけたところです。この問題は解決されなかったようです。 chmod
のCygwin missing cygintl-2.dll
を含むすべてのエラーは、コメントで指摘したとおりです。
広範な調査を行ったが、答えが見つからなかった後、私は走りました:
C:\Users\mztriz\.ssh>ssh -v
OpenSSH_3.8.1p1、OpenSSL 0.9.7d 2004年3月17日使用法:ssh [-1246AaCfghkNnqsTtVvXxY] [-b bind_address] [-c cipher_spec] [-D port] [-e escape_char] [-F configfile] [-i identity_file] [ -L port:Host:hostport] [-l login_name] [-m mac_spec] [-o option] [-p port] [-R port:Host:hostport] [user @] hostname [コマンド]
お気づきのように、私が実行していたOpenSSHのバージョンはかなり時代遅れでした。ただし、OpenSSH for Windows
をすばやくGoogle検索すると、この古いバージョンが返されるため、これを知りませんでした。
バージョン管理を調べたところ、そのWebサイトのダウンロードセクションに OpenSSH for Windows 6.9p1-1 が見つかりました。
このOpenSSHの新しいバージョンは、あなたが言及したすべての問題を解決するようです。
次のように許可を変更します。
これでscpはアクセス許可0400を読み取り、満足します。 Hは。
私は同じ問題に行きました。解決策は、ssh.exeの互換モードをWindows XP SP3に設定することでした。
ファイル/ディレクトリを右クリックし、[プロパティ]、[セキュリティ]の順に選択します。 [詳細]、[編集]の順にクリックします。 「継承可能」のチェックを外し、ダイアログで「削除」を選択します。残っている明示的な許可をすべて削除し、ユーザー名に「フルアクセス」許可を追加します。
非常に単純に:
chown -R $USER:users ~/.ssh/
chmod -R 600 ~/.ssh/
ファイルがWindows(NTFS)シンボリックリンクの場合、上記は機能しません。通常のファイルにする必要があります。理由はわかりません。
Opensshまたはcygwinがない場合は、chocolateyを使用して chocolatey を使用して簡単にインストールします。
choco install cyg-get
chocolateyをインストールして実行したCygwin Terminalを開き、実行します(ssh-keygen
は新しいキーを作成します):
cyg-get install openssh
ssh-keygen
cd ~/.ssh && Explorer.exe .
キーが存在することを確認し(または必要なキーに置き換えて)、Cygwin Shellで:
chown -R $USER:users ~/.ssh/
chmod -R 600 ~/.ssh/
または、chocolateyのSSHパッケージを使用している(およびキーを生成している)まれな場合:
chown -R $USER:users /cygdrive/c/Users/$USER/.ssh
chmod -R 600 /cygdrive/c/Users/$USER/.ssh
CygwinよりもPuTTYの方が好きで、cygwinでchmodコマンドを実行するだけでPEMキーのアクセス許可を400に変更できます。
myuser@myuser-HP ~
$ ssh -i /cygdrive/c/Users/myuser/Downloads/mykey.pem [email protected]
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0550 for '/cygdrive/c/Users/myuser/Downloads/mykey.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 "/cygdrive/c/Users/myuser/Downloads/mykey.pem": bad permissions
Permission denied (publickey).
myuser@myuser-HP ~
$ chmod
chmod: missing operand
Try 'chmod --help' for more information.
myuser@myuser-HP ~
$ chmod 400 /cygdrive/c/Users/myuser/Downloads/mykey.pem
myuser@myuser-HP ~
$ ssh -i /cygdrive/c/Users/myuser/Downloads/meykey.pem [email protected]
__| __|_ )
_| ( / Amazon Linux AMI
___|\___|___|
https://aws.Amazon.com/Amazon-linux-AMI/2015.09-release-notes/
[ec2-user@ip-xxx ~]$ ohyeah I am in!
今日、Windowsで推奨される方法の1つは、PowerShellとGet-Acl
およびSet-Acl
コマンドレットを使用することです。
現在のユーザーのみがフォルダーとその中のすべてのファイルへのアクセス許可を持っていることを確認する例を次に示します-Unix/Linux/OS Xの.ssh
フォルダーに推奨されるものと同様:
# get current ACL of directory
$Acl = Get-Acl -Path $Directory
# remove inheritance ($true) and remove all existing rules ($false)
$Acl.SetAccessRuleProtection($true,$false)
# create new access rule for
# current user
# with FullControl permission
# enable inheritance for folders and files
# enable it for the specified folder as well
# allow these conditions
$AcessRule = [System.Security.AccessControl.FileSystemAccessRule]::new(
$env:USERNAME,
"FullControl",
([System.Security.AccessControl.InheritanceFlags]::ContainerInherit -bor [System.Security.AccessControl.InheritanceFlags]::ObjectInherit),
System.Security.AccessControl.PropagationFlags]::None,
[System.Security.AccessControl.AccessControlType]::Allow)
# add access rule to empty ACL
$Acl.AddAccessRule($AcessRule)
# activate ACL on folder
Set-Acl -Path $SgwConfigDirectory -AclRule
詳細については
私は同じ問題に行きました。解決策は、ssh.exeの互換モードをWindows XP SP3に設定することでした。
->この回答はWindows 7で機能します