GitlabがSSHキーを処理しない


10

Gitlabで問題が発生しています。次のガイドを使用して、Gitlab https://github.com/gitlabhq/gitlab-recipes/blob/master/install/centos/README.mdをインストールおよび構成しました。インストールはすべてうまくいったようです。Webアプリケーションは正常に動作しているようです。ただし、クローン、プル、プッシュはできません。基本的に、Gitlabは基本的に使用できません。SSH経由でクローンを作成しようとすると、HTTPで403エラーが発生し、権限が拒否されました。

WindowsとOS Xの両方で秘密鍵が正しく設定されていることを確認しました。サーバーで公開鍵を確認できます。〜/ .ssh.configの設定ファイルに以下を追加しました

Host {hostname}
    User git
    Hostname {hostname}
    PreferredAuthentications publickey
    IdentityFile C:/Users/{username}/.ssh/id_rsa

これは/ var / log / secureに表示されます

Jan 14 17:31:48 dev_version_control sshd[3696]: Connection closed by 192.168.17.113
Jan 14 17:32:18 dev_version_control sshd[3700]: Connection closed by 192.168.17.113

/var/log/message私はgitのまたはsshを使用しようとしたとき役割ではありませんでした

ここからどこへ行くべきかわかりません。助言がありますか?

gitユーザー名を使用したSSHの意味がわかりません。私が使用したガイドはgitユーザーのパスワードを作成せず、ユーザーはログインに使用できないと述べました。


ユーザー 'git'としてGitサーバーにSSH接続できますか?'-vvv'パラメーターを追加して、接続が閉じられている理由に関する詳細な出力を取得できますか?/ var / log / secureおよび/ var / log / messagesファイルをチェックして、そこにエラーがないかどうかを確認することも価値があります。
jaseeey 2014年

公開鍵がクライアントに設定されていません- 秘密鍵がクライアントにあることを確認する必要があります。公開鍵はサーバー上に置かれます。
EEAA 2014年

私の質問を更新しました。それがお役に立てば
幸い

回答:


10

クライアントに秘密鍵をロードしたとすると、これは 'git'ユーザーのホームディレクトリと.sshディレクトリのアクセス許可の問題であると思われます。

/ home / gitディレクトリを0711のマスクに変更してみてください:

chmod 0711 /home/git

/home/git/.sshディレクトリに0700のマスクがあることを確認します。

chmod 0700 /home/git/.ssh

/home/git/.ssh/authorized_keysファイルのマスクが0600であることを確認します。

chmod 0600 /home/git/.ssh/authorized_keys

/ home / gitを、チュートリアルで異なっていた場合は、「git」ユーザーのホームディレクトリに置き換えます。権限がない場合は、コメントしてください。他に何が問題であるかを確認します。


それが問題だったのかもしれません。Macでgit clone git @ {hostname}:{workspace} / {repository}を使用してクローンを作成できることを知っています。残念ながら、私はWindowsマシンを仕事に置いたままにしているので、明日それを試す必要があります。Gitlabで公開/秘密鍵認証がHTTP経由で機能しませんか?私はGithubがどのように機能するかという印象を受けましたが、それは間違っている可能性があります。
greyfox 2014年

公開/秘密鍵認証はSSHでのみ機能します。HTTPを使用する場合は、ユーザー名とパスワードを使用して何かを行う必要があります。v1.8などの新しいバージョンのGitを使用している場合は、ユーザー名とパスワードの入力を求められるはずです。古いバージョンのGitはこれを行わないため、リモート(つまりhttps://username:password@git.server.com/repo.git)のインラインでユーザー名とパスワードを追加する必要があります
jaseeey

あぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁ では、GitHub for Windowsアプリは認証情報を保存するのですか?助けてくれてありがとう!
greyfox 2014年

私はGitHub Windowsアプリケーションをあまり使用していませんが、メモリから開くとログインが必要だったと思います。そのため、アクセス資格情報を保存して、常に入力する手間を省くことができると思います。
jaseeey 2014年

1

に公開鍵(Webフェイスからインポートされたもの)のレコードが1つだけ/home/git/.ssh/authorized_keysあり、この鍵にgitlabの接頭辞とタイトルが付いていることを確認します。つまり、gitlabをインストールする前に手動で同じキーを追加した場合は、それを削除します。


そこに複数の鍵を置くことができ、秘密鍵が一致すればログインできます...
jaseeey

@ジェイソン、もっと正確に説明するために編集しました
sinm

ありがとう、これで終わりです。Gitlabを使用してキーを追加する前に手動でsshキーを挿入しましたが、キーの重複により問題が発生しました。
6ft Dan

1

また、ユーザーがgitlabでクローン/プル/プッシュする適切な権限を持っていることを確認することをお勧めします。問題の原因がgitlabのユーザーに十分な権限がないことであるとき、私はssh / https構成を調べるのにあまりにも多くの時間を費やしました...


1

私の状況では、FreeBSDパッケージを介してgitlabをインストールしました。Gitlab SSHが機能しませんでした。この原因は、gitのホームディレクトリが間違っていたためです:(vipw)

git:*:211:211::0:0:gitosis user:/usr/local/git:/bin/sh

私はこれを次のように変更しました:

git:*:211:211::0:0:gitosis user:/home/git:/bin/sh

1

これは、ホストの名前に「-」がある場合に発生する可能性があります。(これはRFC 952に従って合法ですが)

sshは、たまたま名前に「-」が含まれるホストのパスワードを要求します。〜/ .ssh / configにエイリアスを追加する(そして、私のgitリモートURLでそのエイリアスを使用する)ことで問題が解決されたため、これはssh構成ファイルの解析に純粋に問題があるようです。

言い換えると、C:/ Users / {username} /。ssh / configに次のようなものを入れてみてください

Host {a}
    User git
    Hostname {a-b.domain}
    IdentityFile C:/Users/{username}/.ssh/id_rsa

フォームのリモコンがある場所

origin  git@a-b.domain:repo-name.git

それを削除してから、フォームを使用して再度追加します

origin  git@a:repo-name.git

1

キーを渡すために環境変数を使用している場合は、それらをbase64エンコードする必要があります。そうでない場合、パスフレーズを要求するエラーで失敗する可能性があります。これは、キーが破損していることを意味します。あなたが見るなら:

$ ssh-add <(echo "$SSH_PRIVATE_KEY")
Enter passphrase for /dev/fd/63: ERROR: Job failed: exit code 1

次に、base64でSSH_PRIVATE_KEY変数をエンコードします。OS Xを使用している場合、

cat ~/.ssh/ssh_key_for_project | base64 | pbcopy

エンコードしてクリップボードにコピーします。次に、.gitlab-ci.ymlスクリプトの行を

- ssh-add <(echo "$SSH_PRIVATE_KEY" | base64 -d)


0

私の問題は、puttygenによって作成および保存された秘密鍵ファイルid_rsaのフォーマットが、ubuntuマシンから作成されたものとは異なることでした。ubuntuマシンからペアキーを作成したら、これらのファイルを%UserProfile%.sshフォルダーの下のWindowsマシンにコピーして戻し、新しく生成された公開キーをGitlabに追加します。許可が拒否されなくなった

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.