GitはSSH URLを使用するとパスワードを要求しますが、sshはパスワードを要求しません。

GitはSSH URLを使用するとパスワードを要求しますが、sshはパスワードを要求しません。

私は3台のサーバー(Ubuntu 16.04 2台、Mac Mini 1台)とMacbookを複数持っています。

1つのサーバーUbuntuはgitlab用で、もう1つは内部サイトサーバーです。 Mac MiniはCIを実行しています。

最近、gitlabサーバーは他のgitlabサーバーに置き換えられました。 (交換したハードウェア、同じIPアドレスとホスト名、新しいソフトウェア、新しいSSHキー、およびその他のすべてのハードウェア(他のサーバーとラップトップ)は、以前と同様にSSHキーを使用します。)

すべてのMacBookは、サーバー上のユーザーのユーザー名/パスワードを使用してSSHを介してサーバーに接続でき、Gitを使用して公開鍵を使用してGitサーバーを介して複製、プッシュなどを行うことができます。

サイトサーバーは公開鍵を介してSSHを介してgitサーバーに接続できますが、ウェルカムメッセージが表示されたら接続は終了します。サイトサーバーは公開鍵でgitを使用することはできません。 Gitがパスワードを求めるプロンプトを表示せず、しばらく持続し、ユーザーのドキュメントディレクトリでテストを使用するときにのみ機能し始める公開鍵として機能しない限り、公開鍵と一緒にgitを使用することはできません. git BreaksのCloneディレクトリに再度追加します/var/www(偶然の一致であり、2回だけ機能しました)。

CIとgitサーバーの接続に問題はありません。

ssh -v を使用すると、ssh が正しい公開鍵を使用していることが出力に表示されます。

したがって、サイトサーバーで次のコマンドを実行します。

ssh [email protected] 

接続してから切断する

git clone [email protected]:somerepo.git

gitユーザーにパスワードを尋ねてください。

サイトサーバーには、gitlabにSSHキーを使用して登録されたユーザーがいます。

複数の呼び出しの出力例:https://pastebin.com/QH0AntK7

答え1

私は同じ問題を偶然発見しました。問題は、gitユーザーのホームディレクトリからrootとして何かをしていたため、認証されたSSHキーファイルを読み取れないことでした。

修正は以下を実行することです。

$ chown -R git:git /home/git/.ssh

答え2

最初にテストする必要があるのは、サイトサーバーからgitサーバーへのキーベースのSSHが機能していることです。あなたの説明によるとそうではありません。 SSHを実行する前に、サイトサーバーにユーザーの公開鍵がありますかcatgit~/.ssh/authoried_keys

答え3

@LazyBadgerのログを生成した後、別のSSHキーを使用しているため、sudoで実行したときにのみ失敗することに気づきました。

GitサーバーのサイトサーバーアカウントにルートSSHキーを含めると、これが機能します。

答え4

OPは解決策を見つけましたが、これが起こる可能性がある他の方法のために困難に直面しています。

接続はssh成功しますが、またはでgit fetch設定した場合は次のようになります(キー名が変更されました)。sshcommand.git/config~/.gitconfig

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    sshcommand = ssh -i /home/user/.ssh/repo_deploy
[remote "origin"]
    ...

ssh-copy-id私はコピーする/home/user/.ssh/id_rsaのではなくコピーするのに慣れているので、/home/user/.ssh/repo_deploy私の結果はOPの結果と非常によく似ています。

関連情報