私は頭がおかしくなる問題があります...少なくとも2時間は修正しようとしましたが、あまり成功しませんでした.
問題自体: Git および gitolite 環境をホストすることになっている VM に CentoS7 をインストールしました (CentOs 7 固有の動作かどうかはわかりません)。必要なサービスとユーザーをインストールしました。すべてが正常に動作しており、パスワードとキーベースの認証を使用して SSH 経由で接続できます。すべてのユーザーのホーム ディレクトリは /home/ にあります。ここで、ホーム ディレクトリとして /srv/data/home/git (/srv は別のパーティションにあります) を持つ新しいユーザー (git) を追加し、キー ベースの認証を有効にします。両方のパーティションは ext4 でフォーマットされています。
grep git /etc/passwd
git:x:1000:1000::/srv/data/home/git:/bin/bash
gitolite をインストールし、公式ドキュメントに従ってユーザーを作成しました。
su - git
mkdir -p ~/.ssh
chmod 700 ~/.ssh
mkdir gitclone-dir
cd gitclone-dir
git clone git://github.com/sitaramc/gitolite
cd gitclone-dir
gitolite/install -ln ~/bin
gitolite setup -pk /srv/data/home/git/.ssh/git_admin.pub
gitolite setup コマンドの出力は次のとおりです。
/srv/data/home/git/repositories/gitolite-admin.git/ で空の Git リポジトリを初期化しました /srv/data/home/git/repositories/testing.git/ で空の Git リポジトリを初期化しました 警告: /srv/data/home /git/.ssh/authorized_keys がありません。新しいものを作成する(これは、まったく新しいインストールでは正常です)
次のステップには、継続的に失敗する gitolite-admin リポジトリのクローンが含まれます。
marcel@mw-ws:~/Sources/juwimm_git/ayeq-benu$ git ls-remote git@192.168.10.35:gitolite-admin.git
git@192.168.10.35's password:
X11 forwarding request failed on channel 0
fatal: 'gitolite-admin.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
debug3 ログ全体を表示するには、次のリンクをたどってください: http://pastebin.com/eiZSTu55
最も重要な行:
Jul 18 17:45:40 bh-infra-s010 sshd[2739]: debug1: temporarily_use_uid: 1000/1000 (e=0/0)
Jul 18 17:45:40 bh-infra-s010 sshd[2739]: debug1: trying public key file /srv/data/home/git/.ssh/authorized_keys
Jul 18 17:45:40 bh-infra-s010 sshd[2739]: debug1: Could not open authorized keys '/srv/data/home/git/.ssh/authorized_keys': Permission denied
今、私はいくつかのチェックを行いました:
su - root
cat /srv/data/home/git/.ssh/authorized_keys
# the statement above works fine and I see the files content on the command line
su - git
cat /srv/data/home/git/.ssh/authorized_keys
# with the same result. It's working fine
さらにいくつかのテストを行いました。以下の私のテストケースの要約を見つけてください: 結果:うまくいきました!- ホームディレクトリとして /srv/testuser2 を使用してユーザーを作成し、上記とまったく同じことを行いました。結果:authorized_keys ファイルに対するアクセス許可が拒否されました。/home/testuserls をホーム ディレクトリとして新しいユーザーを作成し、.ssh ディレクトリに対して手順を繰り返しました。ここで、/home/testuser3 から /home/testuserls へのシンボリック リンクを作成し、/etc/passwd を変更して、/home/testuser3 をこのユーザーのホーム ディレクトリとして設定しました。結果:うまくいきました!- /srv/testuser4 をホーム ディレクトリとして新しいユーザーを作成し、.ssh フォルダーに配置し、/home/testuser4 から /srv/testuser4 へのシンボリック リンクを作成し、/etc/passwd をもう一度変更してホーム ディレクトリを /home にマップしました。 /testuser4. 結果:
ls -l /srv/data/home/git/.ssh/
これは私に与えます:
total 16
-rw-------. 1 git git 1108 Jul 18 16:28 authorized_keys
-rw-------. 1 git git 1679 Jul 18 13:31 id_rsa
-rw-------. 1 git git 399 Jul 18 13:31 id_rsa.pub
なぜこれが起こるのか、これを修正する方法はわかりません。CentOS7関連ですか?私は盲目ですか、それとも愚かですか?これはバージョン openssh-server-6.4p1-8.el7.x86_64 の ssh デーモンからの新しい制限ですか? 私はグーグルまたはこちら側で同様の問題を見つけられず、解決策を見つけることができませんでした...どんな助けも本当に感謝しています!
更新 I すべてのパーティション (もちろんスワップを除く) は ext4 としてフォーマットされます。/etc/mtab の各行は次のとおりです。
/dev/vda1 /boot ext4 rw,seclabel,relatime,data=ordered 0 0
/dev/vda2 / ext4 rw,seclabel,relatime,data=ordered 0 0
/dev/vdb1 /srv ext4 rw,seclabel,relatime,data=ordered 0 0
ACL は使用しません。それ以外の場合は、上記の行にマウント オプションとしてリストされているはずですよね? UID 1000 はユーザー git の UID です。
grep git /etc/passwd git:x:1000:1000::/srv/data/home/git:/bin/bash
/ から始まるパーミッションを確認しましょう
/srv: drwxr-xr-x. 10 root root 4096 Jul 18 16:48 srv
/srv/data: drwxr-xr-x. 3 root root 4096 Jul 18 12:25 data
/srv/data/home: drwxr-xr-x. 4 root root 4096 Jul 18 16:45 home
/srv/data/home/git: drwx------. 7 git git 4096 Jul 18 15:30 git
/srv/data/home/git/.ssh: drwxr-----. 2 git git 4096 Jul 18 16:40 .ssh
** アップデート II - 修正済み **
selinux が有効化されていることが判明しました。この問題は、.ssh-Folder で次のコマンドを実行することで修正されました。
chcon -R --type=ssh_home_t .ssh