4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Xcodeからhttpでgit pushできなくて困った際の解決方法

Posted at

Xcodeで開発をしていて、GitBucketにpushしようとしたら出来なくて困ったので解決策を残しておきます。
自身の環境はGitBucketですが、GitHubでもGitLabでも同様だと思います。

失敗した状態

こんな感じでhttpでリモートリポジトリの設定をして

Main_storyboard.png

pushをすると、user/passwordの入力を求められます。

スクリーンショット_2016_11_30_16_25.png

正しいuser/passwordを入力しているはずなのに成功せず、Cancelすると認証エラーのメッセージが出てきました。

スクリーンショット_2016_11_30_16_26.png

Apacheのログを確認すると、Apacheまでは届いていて、401で返却しています。

xx.xxx.xxx.xx - - [30/Nov/2016:16:24:38 +0900] "GET /gitbucket/git/xxxx/xxxx.git/info/refs?service=git-receive-pack HTTP/1.1" 401 1019 "-" "git/1.0 (libgit2 0.24.0)"

Stack Overflowを漁っても、あまり良さそうな解決策が無い感じです。
下の記事の方で、Xcode accepts just ssh://git@my.domain.cz:2222/project-name と言っていて、ソースは見当たらなかったのですが、sshならイケそうな感じです。

まずは、そもそもGitBucketの方でSSH接続を許可する設定があるのか確認してみます。

GitBucketに管理者でログインし、System Settingsを確認するとEnable SSH access to git repositoryという項目が!
チェックボックスにチェックを入れ、GitBucketのサーバのHostとSSHのPortを入力。(Portは特にこだわりが無かったのでそのままに)
SSHアクセスを許可する場合は、Base URLの設定も必要なので、GitBucketのURLを入力して設定を保存します。

System_Settings.png

ここで設定したSSHのPortで接続できるように、忘れずにFirewallの設定も修正し、restartしておきます。

これでユーザ毎にSSH Keyを登録することができるようになったので、鍵を生成します。(面倒だったのでパスフレーズ無し)

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/tenten0213/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/tenten0213/.ssh/id_rsa.
Your public key has been saved in /Users/tenten0213/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX tenten0213@Mac-mini.local
The key's randomart image is:
+---[RSA 2048]----+
|     ..   o.o.E*%|
|   . ..... o.+ %B|
|    + ..+...o.* *|
|   . + o +.o.o . |
|    o . S + . o  |
|     . o +   o o |
|    . .   o   o  |
|     .   . .     |
|          .      |
+----[SHA256]-----+

上記で作成したid_rsa.pubの内容をGitBucketに登録します。

SSH_Keys.png

これでpushする準備が整いました。

GitのRemoteのURLはSSHの方に変更しておきます。

スクリーンショット_2016_11_30_17_05.png

これでXcodeからpushをすると、接続先を信頼するかと聞かれるのでTrustを選択し、

スクリーンショット_2016_11_30_16_40.png

パスフレーズ無しで鍵を生成したので、そのままOKとすると、pushが成功します。

スクリーンショット_2016_11_30_16_41.png

感想

HTTPでpush出来なくて嘘だろ?!と思って色々調べましたが、あまり有用な情報が無く苦労しました。
他のIDE(Eclipse, IntelliJ IDEA) で同様の環境で苦労したことが無かったのでXcode恐るべしって感じです…:skull:
(実はもっと簡単にイケるよ!って情報があればコメントお願いします!!!!)

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?