web-dev-qa-db-ja.com

git pull:権限が拒否されました(公開鍵)

したがって、AWS上の新しいサーバー(4.5.6.7/10.0.0.111)でgitを私のリポジトリサーバー(1.2.3.4)(debian)と連携させようとしています。

私のリポジトリの.git/config

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[branch "master"]
    remote = Origin
    merge = refs/heads/master
[remote "Origin"]
    url = [email protected]:/opt/git/repo.git
    fetch = +refs/heads/*:refs/remotes/Origin/*

私はこのエラーを受け取ります:

[ec2-user@ip-10-0-0-111 html]$ Sudo git pull
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

私の公開鍵は/home/git/.ssh/authorized_keysにあります

以前は、リポサーバーでユーザーgitのパスワードを要求されました(キーファイルのパスフレーズではありません)。次に、gitユーザーのパスワード認証を無効にし、代わりに拒否された権限を受け取りました。この間、今は上記のエラーが発生しましたssh経由で正常にログインできました

ssh [email protected]

パスワードなしのプロンプトなど:

debug1: Offering RSA public key: /home/ec2-user/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug1: Authentication succeeded (publickey).

リポジトリサーバー(1.2.3.4)でsshログインが成功すると、/ var/log/auth.logに次のように表示されます。

Feb 22 15:45:44 hostname sshd[20142]: Connection from 4.5.6.7 port 50409
Feb 22 15:45:44 hostname sshd[20142]: Found matching RSA key: <fingerprint>
Feb 22 15:45:44 hostname sshd[20142]: Accepted publickey for git from 4.5.6.7 port 50409 ssh2
Feb 22 15:45:44 hostname sshd[20142]: pam_unix(sshd:session): session opened for user git by (uid=0)

私がgit pullを試みると、auth.logは次のようになります。

Feb 22 15:46:41 hostname sshd[20177]: Connection from 4.5.6.7 port 50410

その後は何もない。

通常のsshコマンドが完全に機能しているときに、gitのgit ssh認証エラーをデバッグするにはどうすればよいですか?

3
chris

あなたがやる git pullの下のSudoが問題です。しているだけ

git pull

あなたのために働くでしょう。またやって

Sudo ssh [email protected]

あなたのために失敗します。問題は、Sudoがユーザーを変更し、IDファイルが表示されなくなることです/home/ec2-user/.ssh/id_rsa/root/.ssh/id_rsa)。通常のユーザーでpullを実行するか、ターゲットユーザーの適切な場所(root)にキーをコピーまたは移動します。

3
Jakuje

あなたのsshキーは未検証ではありません。

_ssh-keygen -t rsa -C "[email protected]"_は、現在のユーザーのsshキーを生成します。例えば:

_$ whoami
nodejh

# It will generate the ssh key for user: nodejh
$ ssh-keygen -t rsa -C "[email protected]

# Check that you are connecting to the correct server 
$ ssh -T [email protected]
Hi username! You've successfully authenticated...
_

_Sudo ssh-keygen -t rsa -C "[email protected]_は、rootのsshキーを生成します。つまり、_ssh -T [email protected]_はPermission Denied (publickey)を返しますが、_Sudo ssh -T [email protected]_は正常に機能します。

ユーザーのsshキーを生成する場合は、adminの場合、現在のユーザーをadminに変更してから、sshキーを生成できます。

_# change the current user to admin
$ su admin
# generate ssh key for `admin`
$ ssh-keygen -t rsa -C "[email protected]`
_
1
nodejh