Cygwinのssh.exeを使用した「悪い所有者またはアクセス許可」エラー


29

Cygwin(Windows 7)でssh.exeを使用しようとしています。configファイルをにコピーしましたc:\cygwin\home\[USERNAME]\.ssh。実行するとssh(たとえばssh -vT git@bitbucket.org)、次のエラーが表示されます。

OpenSSH_5.9p1、OpenSSL 0.9.8r 2011年2月8日/home/[USERNAME]/.ssh/configの悪い所有者または許可

ssh構成ファイルを読み取るにはどうすればよいですか?

回答:


46

上記のようにした後、私はいつもこれを手に入れました:

total 22
drwxrwxr-x+ 1 jl None    0 Sep  9 18:44 .
drwxrwxr-x+ 1 jl None    0 Sep  9 18:44 ..
-rw-rw----  1 jl None  129 Jul  1 14:30 config

およびのエラー.ssh/config。だから私はフォルダで実行しchownました.ssh、そしてchmod再びこのように:

> chown -R [USERNAME]:users .ssh/

その後:

> chmod -R 600 .ssh/

そして最後に私はそれを機能させました:

total 29
drwxrwxr-x+ 1 jl None     0 Sep  9 18:44 .
drwxrwxrwt+ 1 jl None     0 Sep  9 18:44 ..
drw-------+ 1 jl Users    0 Sep  9 18:44 .ssh

編集(Windows10のbashの場合)

エラーが発生した場合..

ホストを既知のホストのリスト(/PATH_TO_HOME/USERNAME/.ssh/known_hosts)に追加できませんでした。

known_hostsが書き込み可能であることを確認してください

$ chmod 755既知のホスト

注:秘密鍵に600だけを設定する必要があると思います

次に、sshを試してください。

あなたが取得するとき..

既知のホストのリストに「HOST_IP」(RSA)を永続的に追加しました。

モード600を置き換えることができます

$ chmod 600 known_hosts

PS:これはWindows 8のバグだと思います。


受け入れられた答えは私にはうまくいきませんでしたが、これはうまくいきました。ありがとう!
アハルデイブ

また、これは非常に奇妙なバグです。私のコンピューター(W8.1)では、Vimで.ssh / configファイルを編集すると常にこのバグが発生します。ssh configを変更するたびにこれらのコマンドを実行する必要があるため、非常に面倒です。
アハルデイブ

4
奇妙なことに、英語版以外のWindowsを使用している場合は、このコマンドを発行するときに「ユーザー」のロケール翻訳を使用してください。たとえば、オランダ語では「chown -R:Gebruikers .ssh」
アレクサンダー

1
私にとっては、これはうまくいきました:chown -R m0j0:Users .ssh && chmod -R go-rwx .ssh
m0j0

1
これはドイツ語で、同様に私のために働いたおかげで、あなたが使用する必要がありますchown -R [Username]:Benutzer .ssh/
詐欺

20

この回答はhttps://superuser.com/a/875934/82032からそのままコピーされます。これは、最近のcygwinのアップグレード後に機能した唯一の答えです。

ACLを忘れないでください

ACLのファイルを削除してアクセス許可をリセットするまで、何も機能しませんでした。

#remove ACLs
setfacl -b ~/.ssh/config

#reset permissions
chmod 0600 ~/.ssh/config

getfaclファイルの現在のACLを表示するために使用できます。

getfacl ~/.ssh/config

ACLを削除する前(破損):

# owner: Administrators
# group: None
user::rw-
group::---
group:Authenticated Users:rwx
group:SYSTEM:rwx
mask:rwx
other:---

後:(作業中)

# file: config
# owner: myusername
# group: None
user::rw-
group::---
other:---

これは、cygwinをアップグレードした後にしなければならないこと
でした

1
これは1.7.34-6のCygwinが必要です
ClintM

これは私のために働いたものです!
アシュトッシュジンダル

9

configCygwinのlsコマンドを使用して、ファイルのアクセス許可を確認します。

> c:\cygwin\bin\ls.exe -la c:\cygwin\home\[USERNAME]\.ssh

おそらく次のようなものになるでしょう:

total 5
drwxrwxrwt+ 1 Administrators None  0 Oct 20 17:02 .
drwxr-xr-x+ 1 [USERNAME]     None  0 Oct 19 08:15 ..
-rw-------  1 Administrators None 57 Oct 20 16:58 config

構成ファイルは[USERNAME]に属している必要があります。これを試して:

> c:\cygwin\bin\chown.exe [USERNAME] c:\cygwin\home\[USERNAME]\.ssh\config

ls -la正しい所有者が表示されるはずです。それでもうまくいかない場合は、モードをリセットしてみてください(許可):

> c:\cygwin\bin\chmod.exe 700 c:\cygwin\home\[USERNAME]\.ssh\config

9

UNIXおよびOSXの場合

非常に単純に:

chown -R $USER:users ~/.ssh/
chmod -R 600 ~/.ssh/

Windowsの場合

ファイルがWindows(NTFS)シンボリックリンクの場合、上記は機能しません。通常のファイルにする必要があります。理由はわかりません。

opensshまたはcygwinがない場合は、chocolateyを使用して簡単にインストールしてください。

choco install cyg-get

chocolateyでインストールされたCygwinターミナル開き、実行します(ssh-keygen新しいキーを作成することに注意してください):

cyg-get install openssh
ssh-keygen
cd ~/.ssh && explorer.exe .

キーが存在することを確認し(または必要なキーに置き換えて)、Cygwinシェルで:

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

通常、ファイルのグループが間違っているため、これは私にとっては通常です。
アランクルーガー

3

Windowsが米国英語でない場合の重要な注意:「users」グループの名前はロケールに依存します。たとえば、Windowsがスペイン語の場合、ファイルの所有権を変更する必要がありますchown $USER:Usuarios *


1

これら(chmod / chown / icacls / setacl / copyacls / explorer> security)はどれも私のcygwin64 / win7 / adminで機能しcygwin64/ssh -F ~/.ssh/configませんでした。


を使用-Fすると、で問題が解決しますがconfig、秘密キーのアクセス許可は解決しません。
ヤリトゥルキア

0

dir を使用noaclしたパスで使用する場合の~/.ssh簡単な解決策は、ネイティブNTFSシンボリックリンクを作成することです。

cmd# mklink c:\home\.ssh c:\opt\cygwin\home\misc\.ssh
symbolic link created for c:\home\.ssh <<===>> c:\opt\cygwin\home\misc\.ssh

ではnoacl、他の権限を設定する方法はありませんrwxr-xr-xrw-r--r--/階層はなしでなければなりませんnoacl(またはにする必要がありますacl)あなたはそれにCygwinのアプリケーションのための問題の場所をここにディレクトリとポイントを作成することができます。


1
これがディレクトリである場合、シンボリックリンクの設定に必要な特権を必要としないため、単純な解決策はジャンクションを使用することです。それmklink /jjunction、Sysinternals Suiteのツールになります。
0xC0000022L

0

tldr:管理者として構成を作成した可能性があります

溶液

これらのソリューションは、誤ってファイルを管理者として作成し、ローカルのパーマでファイルを使用しようとした場合に過剰になる可能性があります。

  • ssh configの内容をコピーします
  • ファイルを削除する
  • 新しいシェルを開きます(ローカル-非管理者)
  • 設定が保存されているパスに移動します(通常~/.sshはPowerShellまたは%userprofile%\.sshcmdで
  • 走る notepad .\config

単純なコマンド(PowerShell):

$sshPath = '~/.ssh/config'
$content = cat $sshPath
# In case the line above fails, this check will prevent your current config to get deleted
if ($content) {
  rm $sshPath
  $content | Out-File -en ascii $sshPath
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.