BFT名古屋 TECH BLOG

日々の業務で得た知識を所属するエンジニアたちがアウトプットしていきます。

【SourceTree・SSH】リモートレポジトリに接続できないを解決する(「ソースパス/ソースURLとして正しくありません」)

はじめに


★★★★★
(2022/12/02更新)
また他のPCでSourceTree入れましたが特に問題はありませんでした。なぜ…
PCの情報とSourceTreeのバージョンを追記しています。
★★★★★

こんにちは!
株式会社BFT名古屋支店・インフラ女子(?)のやまぐちです。

以前、一般の方と一緒に作った「こんどる?」という混雑状況可視化サービス。
ファイルサーバ代わりとして、その他ソースの管理としてGitLabを使っており、ファイルサーバ代わりとしたリポジトリにはSourceTreeというGUIツールを使ってアクセスしていました。

bftnagoya.hateblo.jp

bftnagoya.hateblo.jp

GitLabへはSSHで接続します。アカウントの作成が不要なのでユーザ負荷は低いのですが、SourceTreeにSSH鍵の設定が必要です。

あれから一年ほどたって、新しいPCでSourceTreeをインストールし同じ設定をしたにも関わらずCloneするときに「ソースパス/ソースURLとして正しくありません」とエラーが出ました。

本記事ではその解決方法を記載しています。
同じエラーで接続できない方の助けになれば幸いです。

確認したときのバージョン情報はこちら ↓↓↓
OS:Windows 11 Pro, ビルド22000.556
SourceTree:3.4.8

★★★(2022/12/02追記)
以下バージョンでは問題発生せず
OS:Windows 11 Pro, ビルド22621.819
SourceTree:3.4.10
★★★

「ソースパス/ソースURLとして正しくありません」を解決する


① gitのパスを確認する

まずはエラーメッセージをそのまま受け取り、入力したgitのURLが正しいかどうかを確認しましょう。

GitLabにブラウザでアクセスできるのであれば、該当のリポジトリの [ クローン ] - [ SSHでクローン ] をコピーします。

その値を入れても同じメッセージだった場合は②をやってみる価値アリです。

plinkから直接GitLabに接続してみる

デフォルトでSourceTreeはGitLabへのSSH接続にPuTTYPlinkを利用しています。どうやらそのPlinkからGitLabへのSSH接続がうまくいっていない模様なので、直接PlinkからSSH接続してみます。

1.管理者権限でコマンドプロンプトを起動する。
[ Windows ] キー + [ R ] キー を押して [ cmd ] と入力、[ OK ] を押すときに一緒に [ Ctrl ] キー と [ Shift ] キー も押すと簡単です。

2. 以下のコマンドを実行し、PlinkでGitLabへSSH接続する。
<plink.exeのパス> -ssh -C -i <ppkパス> <gitパス>

  • plinkのパス…"C:\Users\<ユーザ名>\AppData\Local\SourceTree\<バージョン>\tools\putty\plink.exe"
  • ppkのパス…SourceTreeに登録したSSH接続に使用する秘密鍵のパス
  • gitパス…①で確認したリポジトリのパス

以下に例を記載します。成功するとwelcomeと言われ、プロン プトは戻ってきます。

C:\WINDOWS\system32>"C:\Users\tesetuser\AppData\Local\SourceTree\app-3.4.8\tools\putty\plink.exe" -ssh -C -i "C:\Users\testuser\sourcetree\private.ppk" git@gitlab.com:testusergit/konzatsu_vis.git  

Using username "git".
Access granted. Press Return to begin session.
Server refused to allocate pty
Welcome to GitLab, @testusergit!

C:\WINDOWS\system32>

3. SourceTreeに戻ってgitのパスを指定する。
エラーが解消していることを確認します。

SourceTreeでは内部でGitLabへのSSH接続にPuTTY/Plinkが使用されていますが、おそらくSourceTreeからPlinkへのSSH接続要求(か情報)がうまく渡されていないのでは、と思います。

そのため、先にPlinkSSH接続をさせることで接続情報が残り、SourceTreeからも使えるようになるのだと思われます。

別の記事でplink.exeのパスを環境変数を追加すればイケる!というものもありましたので、単にSourceTreeからplinkの呼び出しに失敗しているのかもしれません。

終わりに


うまくいかない時はまずエラー文をちゃんと理解しよう!
なんて言いつつも、元々のエラー文だけだと結果的に何が起こっているかわからないパターンもあります。
一つ一つ、エラーと向き合いその原因をちゃんと理解するのって楽しいし勉強になるなぁと改めて思いました。

「それ違うよ」などありましたらお気軽にコメントください! ここまで読んでいただきありがとうございました~ ^ ^