したがって、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認証エラーをデバッグするにはどうすればよいですか?
あなたがやる git pull
の下のSudo
が問題です。しているだけ
git pull
あなたのために働くでしょう。またやって
Sudo ssh [email protected]
あなたのために失敗します。問題は、Sudo
がユーザーを変更し、IDファイルが表示されなくなることです/home/ec2-user/.ssh/id_rsa
(/root/.ssh/id_rsa
)。通常のユーザーでpull
を実行するか、ターゲットユーザーの適切な場所(root
)にキーをコピーまたは移動します。
あなたの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]`
_