[〜#〜]編集[〜#〜]
ここで公開された問題は解決されました(
.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
です。そして、ファイルは読みやすいので、どこにトリックがあるのでしょうか?
問題は、ファイルとディレクトリのアクセス許可がStrictModes
の要件を満たしていないという事実です。OpenSSHではデフォルトでyes
であり、変更するべきではありません。 authorized_keys
の権限を0600
に、.ssh
ディレクトリの権限を0700
に設定してみてください。
# chmod 0700 .../.ssh/
# chmod 0600 .../.ssh/authorized_keys
...
はインストールによって異なることに注意してください(たとえば、この質問では/var/git/
ですが、ユーザーの場合は/home/username/
になります。
パラノイアの理由から、.ssh
ディレクトリとauthorized_keys
はグループ書き込み可能であってはなりません。私の考えでは、ユーザーは自分の許可を明示的に制御できる唯一のユーザーでなければなりません。これの回避策はACLにあると思います。もう1つの回避策は、sshdの構成ファイルのStrictModes=no
設定です。しかし、1人のユーザーのためにそれを行うのは危険すぎます。
追伸あなたのls -l /var | grep git
はls -ld /var/git
としてより簡潔に行われます
$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