gitlabをSSHでクローンする際のQNAPの設定

NAS上のgitlabをSSHでクローンし、プッシュすると、下記のエラーが出ました。

ssh: connect to host gitlab.com port XX: Network is unreachable
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

これは、GitがGitLabサーバーに接続できないことを示しています。QNAPのコントロールパネルのTelnet/SSHのSSH接続を許可する(管理者だけがリモートログインできます。)にはチェックが入っております。SSH接続するためにQNAPで他に設定するべき部分はありますでしょうか。よろしくお願い致します。

1 Like

@ommo さん

NASにSSHでアクセスはできる状態でしょうか?

SSH周りでいうと、おそらくSSHサーバー側で許可する暗号化種類というものが変わったようで、古いTeraTermでは接続できなくなったことがありました。
SSHのコネクションを疑うのであれば、このあたりを見てみてはいかがでしょうか?

素直に読むと、SSHで接続するためのNAS側ポートが開いてないような気がしますので、QuFirewallなどの設定もご確認いただくのが良いかもしれません。
gitlob.comにアクセスしようとしているようにも見えますが、プッシュ先はどちらになりますでしょうか?
NAS上にgltlab gitサーバーを構築して、クライアントからのクローンはできたけど、プッシュができなかった。というシチュエーションかと理解しています。
プッシュ先を、NASのIPアドレスなどにしてみるのもいいかもしれないと思います。

1 Like

@Harinezumi
ご返信ありがとうございます。

TeraTermやQuFirewallは使用していませんでした。
ご指摘のプッシュ先をNASのIPアドレスに変更する形で試したところ、クローン時に下記のエラーが出るようになりました。

fatal: could not create work tree dir ‘project’: Permission denied

httpでクローンしても同様のエラーが出ました。

gitlabの接続に関しては下記を参考にしております。
[GitLab プロジェクト作成→commit→push ssh接続]

何卒、ご力添えいただけますと幸いです。

※追記
再度ディレクトリを移動し、試したところ下記のような結果となりました。
・git@XXXX:lab/project.git をgitlabのSSHでクローンからそのままコピーした場合
$ git clone git@XXXX:lab/project.git
Cloning into ‘project’…
ssh: Could not resolve hostname XXXX: Name or service not known
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

・git@XXXX:lab/project.git をNASのIPにした場合
$ git clone git@XXXX:lab/project.git
Cloning into ‘project’…
git@XXXX’s password:

ここのパスワードが何のパスワードを求めているのかわかりませんでした。
gitlabとQNAPのパスワードは試しました。
QuLog Centerを見ると、何回かログインに失敗した警告が出ていました。

@ommo さん

エラーメッセージが表示されている場合は、1つずつエラーを解消していく必要があるかと思います。

fatal: could not create work tree dir ‘project’: Permission denied

このメッセージが出ている場合は、gitコマンドでリポジトリにアクセスする際のユーザーが、フォルダの作成権限などないのではないかと思います。
gitサーバー側のパーミッションなど、アクセスしようとしているユーザーに適切な権限が付与されているかどうか?などご確認されるとよいかと思います。

ssh: Could not resolve hostname XXXX: Name or service not known

これは名前解決に失敗していると思います。
nslookupなどでホスト名で名前解決ができるかどうか?など確認されるとよいかと思います。
ローカルでのアクセスであれば、hostsファイルに設定してしまうのもありかもしれません。

$ git clone git@XXXX:lab/project.git
Cloning into ‘project’…
git@XXXX’s password:

これは、gitというユーザーでアクセスしようとしているので、gitレポジトリ側のgitのパスワードかと思います。

いずれにしても、gitリポジトリとクライアントの関係など、一度整理いただいたほうが、ここでアイディアをもらいやすいかと思います。
QNAP上には、gitコマンドはデフォルトでは入ってないと思いますが、dockerなどを使っている感じでしょうか?

1 Like

@Harinezumi 様 ご返信ありがとうございます。

gitは下記を参考にDockerを使っています。

@ommo さん

NAS上にdockerでgitサーバーを立てたということですね。なるほどです。
お送りいただいたURLには詳細記載がないようですが、gitのコンテナはNATではなく、ブリッジ設定で外側のネットワークと同じIPアドレスを持たせたほうが良いと思います。
NATの設定だとポートフォワードがかかると思いますので、httpポート、httpsポートなども80, 443以外を指定する必要があり、gitクライアントの設定もめんどくさくなってしまうと思います。

gitlabのコンテナの方でユーザーを作成し、空のプロジェクトを作成します。

手元の環境では、Windowsのgitクライアントから、http://10.27.64.92/harinezumi/myfirstproject に対してcloneすることができました。

ローカルでの運用であればsshでのアクセスは必須ではないと思います。
簡単なところから確認していってみてはいかがでしょうか?
多分、Dockerコンテナをbridgeで外に出せば問題なく動作するような気がします。

1 Like

@Harinezumi
ご返信ありがとうございます。

上記の方法でhttpでのクローンに成功しました。ありがとうございます。
sshでのアクセスは必須ではないとのことですが、毎回認証情報(ユーザー名とパスワード)を入力する必要がありますでしょうか(クローン時に求められました)。

何卒、ご力添えいただけますと幸いです。

@ommo さん

ひとまず動作したようでよかったです。
毎回認証を必要とするかどうか?はクライアントの設定次第であったり、クライアント依存な部分かと思います。
(ブラウザでNASの設定画面にアクセスするときの"記憶する"のような設定です。)
そこはお手元で確認してみてください。

1 Like