キーファイルの権限を変更しようとしていますkey.pem
in Cygwin 1.7.11。許可フラグがあります:-rw-rw----
chmod -c 600 key.pem
レポート:
'key.pem'のモードが0660(rw-rw ----)から0600(rw -------)に変更されました
しかしながら:
ls -l key.pem
まだ報告します
key.pemの許可フラグはまだ残っています:-rw-rw ----
私が尋ねているこの理由は、sshが不満を言っているということです:
'key.pem'の権限0660が開きすぎています。
amazon EC2インスタンスにSSH接続しようとすると、 これはCygwinとWindows 8 NTFSの問題ですか、それとも何か不足していますか?
Win8CPでCygwinを使用していますが、同じ問題が発生しました。これは間違いなくCygwinのバグですが、回避策があります。実行してみてください。
chgrp -R Users ~/.ssh
より長い説明は、何らかの理由でCygwinの/etc/passwd
および/etc/group
生成により、ユーザーのデフォルト/メイングループがNone
として配置されます。また、None
の権限は変更できないため、グループのchmod
は無効です。
passwd
/group
ファイルを自分で修復しようとはしませんでしたが、chgrp -R Users ~/.ssh
(または、Windows 8プレリリースを使用している場合は、グループ名HomeUsers
)。その後、chmod 0600
と期待どおりに動作します。
chgrp
からUsers
グループへのアクセスは、他の同様のケースが見つかった場合に実行できます。 CygwinはユーザーをUsers
グループにsecondaryグループとして配置するため、期待どおりに機能します(正しい動作であるprimaryではなく)。
Cygwin 1.7.34(2015-02-04)以降、グループをUsers
に変更する方法は機能しなくなりました。代わりに、Cygwinのsetfacl
ユーティリティを使用する必要があります。
たとえば、ファイルモードを644 (rw-r--r--)
に設定する場合は、次のようにします。
setfacl -s u::rw-,g::r--,o:r-- foo.bar
または、より長い形式を使用します。
setfacl -s user::rw-,group::r--,other::r-- foo.bar
または、getfacl
を使用してファイルfoo
からbar
にモードをコピーします。
getfacl foo | setfacl -f - bar
完全なマニュアルは、Cygwinユーザーガイドの "setfacl"セクション にあります。 Cygwinがchmod
ユーティリティをまだ変更していないのはなぜですか。
これは、Luke Leeの提案を使用するが、chmodのような8進数の引数をサポートするスクリプトです。拡張可能なフレームワークを提供します。現在はkey.pemや〜/ .sshディレクトリとファイルのパーミッションを修正するために必要な8進数の引数のみをサポートしていますが。
#!/bin/bash
# convert chmod octal permission args to equivalent setfacl args
ARGS=() ; FILES=()
while [ $# -gt 0 ]; do
A=$1 ; shift
case "$A" in
600|0600) ARGS+=("u::rw-,g::---,o::---") ;;
640|0640) ARGS+=("u::rw-,g::r--,o::---") ;;
644|0644) ARGS+=("u::rw-,g::r--,o::r--") ;;
700|0700) ARGS+=("u::rwx,g::---,o::---") ;;
*) if [ -e "$A" ]; then FILES+=( "$A" ) ; else
echo "unrecognized arg [$A]" 1>&2
exit 1
fi
;;
esac
done
for F in "${FILES[@]}" ; do
setfacl -s "${ARGS[@]}" "$F"
done
.sshディレクトリとファイルを修正するために、次のように使用しました。
chmodfacl 700 ~/.ssh
chmodfacl 600 ~/.ssh/*
chmodfacl 640 ~/.ssh/*.pub
chgrp -R Users ~/.ssh
chmod 0600 ~/.ssh/config
chmod 0700 ~/.ssh
git bashがインストールされている場合は、同じコマンド(chmod -c 600 key.pem
)git bashを使用してCygwinを回避します。
この問題は、cygwinターミナルからssh-keygenコマンドを実行することで解決できます(通常のWindowsコマンドプロンプトではありません)。私は私のwindows8マシンでこれを行いました。