web-dev-qa-db-ja.com

GitlabがSSHキーを処理しない

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ユーザーのパスワードを作成せず、ユーザーはログインに使用できないと述べました。

10
greyfox

クライアントに秘密鍵をロードしたとすると、これは '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'ユーザーのホームディレクトリに置き換えます。権限がない場合は、コメントしてください。他に何が問題であるかを確認します。

10
jaseeey

私の状況では、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
gamecreature

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

1
sinm

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

1
shtolik

これは、ホストの名前に「-」がある場合に発生する可能性があります。 (これは 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  [email protected]:repo-name.git

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

Origin  git@a:repo-name.git
1
SensorSmith

キーを渡すために環境変数を使用している場合、それらを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)
1

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

0
Quang Le

eval $(ssh-agent)を実行すると問題が解決しました。

0
michalzuber