質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.78%

gitlabのsshに接続できない

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 10K+
退会済みユーザー

退会済みユーザー

発生している問題

gitlabのsshに接続できません
git cloneを行おうとしてもエラーが発生してしまいます。

エラーメッセージ


shell
HOST:~ USER$ git clone git@HOST:USERNAME/REPO.git
Cloning into 'REPO'...
Write failed: Broken pipe
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
/var/log/secure
DATE HOST sshd[20456]: Accepted publickey for git from IP port PORT ssh2: RSA finger
DATE HOST sshd[20456]: pam_unix(sshd:session): session opened for user git by (uid=0)
DATE HOST sshd[20456]: fatal: safely_chroot: stat("/home/git/"): No such file or directory [postauth]
DATE HOST sshd[20456]: pam_unix(sshd:session): session closed for user git

バージョン等

GitLab 8.1.0
GitLab Shell 2.6.5
GitLab API v3
Ruby 2.1.7p400
Rails 4.1.12
CentOS7

補足

gitlabは公式ドキュメントに従い、yumを使用してインストールしました。
https://about.gitlab.com/downloads/#centos7
ですから、/home/gitなんて存在しないはずなのですが、よくわかりません。

sshで接続してみましたが、Broken pipeで切断されますが、どうやら認証自体は成功しているようです。
ssh -vT git@HOST

OpenSSH_6.9p1, LibreSSL 2.1.7
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 20: Applying options for *
debug1: /etc/ssh/ssh_config line 102: Applying options for *
debug1: Connecting to HOST [IP] port 22.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file /Users/USER/.ssh/id_rsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/USER/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/USER/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/USER/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/USER/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/USER/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/USER/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/USER/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.9
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1
debug1: match: OpenSSH_6.6.1 pat OpenSSH_6.6.1* compat 0x04000000
debug1: Authenticating to HOST:22 as 'git'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client chacha20-poly1305@openssh.com <implicit> none
debug1: kex: client->server chacha20-poly1305@openssh.com <implicit> none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ssh-rsa SHA256:KEY
debug1: Host 'HOST' is known and matches the RSA host key.
debug1: Found key in /Users/USER/.ssh/known_hosts:3
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/USER/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug1: Authentication succeeded (publickey).
Authenticated to HOST ([IP]:22).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
packet_write_wait: Connection to IP: Broken pipe
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+3

/var/log/secure を見ると、git ユーザーで認証後、/home/git/ に chroot できないようです。

手元の環境で "gitlab-ctl reconfigure" すると、git ユーザーが作成されて、ホームディレクトリは /var/opt/gitlab となりました。公開鍵はおそらく /var/opt/gitlab/.ssh/authorized_keys に登録されていると思います。
git ユーザーのホームディレクトリは変更していないですよね。もし、変更していたら認証に失敗するはずですし。

sshd 側(/etc/ssh/sshd_config)で以下のような設定をしていませんでしょうか。
ChrootDirectory /home/git

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/10/26 00:55

    /etc/ssh/sshd_configを確認したところ下記のようになっていて、おそらくデフォルトのままです。
    #ChrootDirectory none

    gitユーザーのホームディレクトリをfingerで確認したところ、/var/opt/gitlabになっていました。実行結果は下記の通りです。
    Login: git Name:
    Directory: /var/opt/gitlab Shell: /bin/sh
    Never logged in.
    No mail.
    No Plan.

    /var/opt/gitlab/.ssh/authorized_keysを確認したところ、公開鍵は正しく登録されていました。

    なぜ/home/gitにアクセスしに行ってしまうのでしょうか?



    キャンセル

  • 2015/10/26 11:26

    該当のログは、sshd_config に "ChrootDirectory /home/git" あるいは "ChrootDirectory /home/%u" と設定されている場合にしか出ないと思うのですが、設定されていないようですね。ちょっと、わかりません。

    考えにくいですが、"sshd -f (設定ファイル)" で別の設定ファイルで起動しているとか、"-o ChrootDirectory=/home/%u" で設定を上書きしているとか。
    他の一般ユーザーで SSH ログインした場合は chroot 環境にならないのですよね?

    キャンセル

  • 2015/10/26 13:18 編集

    根本的な解決方法ではないですが、
    Match User git
    ChrootDirectory none
    にて、解決することができました。
    ありがとうございました。

    追記:
    他の一般ユーザーでログインしてもchroot環境にならないことを確認しました。

    キャンセル

+1

鍵の生成と登録は済んでいるでしょうか?
済んでいたら、私の回答はスルーしちゃってください。


使用しているOSがWindowsであれば、Cygwinをインストールし、sshを導入すると楽です。
鍵の生成 - OSDN
手順としては、そう変わりません

鍵の生成→公開鍵をサイトに登録→ssh接続の認証に秘密鍵を使用

検索キーワード
「GitLab ssh 接続」
「GitLab 公開鍵 登録」

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/10/24 07:27

    鍵の生成と登録は既に行っています。
    説明不足ですいません。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.78%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る