web-dev-qa-db-ja.com

認証が拒否されました:ファイル/var/git/.ssh/authorized_keysの所有権またはモードが不正です

[〜#〜]編集[〜#〜]

ここで公開された問題は解決されました(.sshフォルダーのファイルモードについて)。

しかし、他の問題が解決しないため、新しい質問を作成します:> SSH-RSAキーでログインできません

特定のユーザーのssh-rsaキーで接続できなくなりましたが、他のユーザーでは引き続き機能します。

次のように定義されたgitユーザー:

# cat /etc/passwd | grep git
git:x:1002:1002:,,,:/var/git:/bin/bash

つまり、これはgitユーザーであり、ホームは/var/gitであり、/homeにはないことに気付きました。

さて、sshは常にパスワードを要求します:

$ ssh git@srv
git@srv's password:

私はログをチェックしました:

# tail -n 1 /var/log/auth.log
[...] Authentication refused: bad ownership or modes for file /var/git/.ssh/authorized_keys

したがって、authorized_keysは、一部の所有権またはモードの構成に誤りがあります。ここにこのファイルのconfがあるため、理解できません。

# ls -l /var/git/.ssh/ | grep auth
-rw-rw-r-- 1 git git 394 mai   22 17:39 authorized_keys

そして、ここに(場合に...)親.ssh dirがあります:

# ls -al /var/git/ | grep ssh
drwxrwxr-x  2 git  git  4096 mai   22 17:39 .ssh

そして$HOMEディレクトリ:

# ls -l /var/ | grep git
drwxr-xr-x  7 git  git    4096 mai   27 10:49 git

したがって、所有者は常に所有者グループのようにgitです。そして、ファイルは読みやすいので、どこにトリックがあるのでしょうか?

22
Rémi B.

問題は、ファイルとディレクトリのアクセス許可がStrictModesの要件を満たしていないという事実です。OpenSSHではデフォルトでyesであり、変更するべきではありません。 authorized_keysの権限を0600に、.sshディレクトリの権限を0700に設定してみてください。

# chmod 0700 .../.ssh/
# chmod 0600 .../.ssh/authorized_keys

...はインストールによって異なることに注意してください(たとえば、この質問では/var/git/ですが、ユーザーの場合は/home/username/になります。

26
damienfrancois

パラノイアの理由から、.sshディレクトリとauthorized_keysはグループ書き込み可能であってはなりません。私の考えでは、ユーザーは自分の許可を明示的に制御できる唯一のユーザーでなければなりません。これの回避策はACLにあると思います。もう1つの回避策は、sshdの構成ファイルのStrictModes=no設定です。しかし、1人のユーザーのためにそれを行うのは危険すぎます。

追伸あなたのls -l /var | grep gitls -ld /var/gitとしてより簡潔に行われます

5
Otheus

$HOME/.sshディレクトリモード必須 700であり、authorized_keysすべき所有者のみが読み取り可能、つまりモード600:

chmod u=rwx,g=,o= /var/git/.ssh
chmod u=rw,g=,o= /var/git/.ssh/authorized_keys

秘密鍵に関しては、それはmust所有者だけが読み書き可能でなければなりません:

chmod u=rw,g=,o= /var/git/.ssh/id_?sa
4
user86969