GitLabからGitHubにSSHを使ってミラーリングする
#git #gitlab #github #ssh #備忘
GitLabからGitHubにミラーリングする というhttps basic認証でミラーリングする方法がありますが、
この方法が半年ちょっと先には使えなくなるので、sshを使ったミラーリング方法を残しておきます。
参考
Repository mirroring | GitLab
手順
手順は大きく3つで、
両サービスにリポジトリを作る
gitlabで公開鍵を取得
githubに公開鍵を登録
です。
両サービスにリポジトリを作る
これは両方のサービスにアカウントを作ってリポジトリを作ります。
ミラーリングしたいって思ってる時点で両サービスにアカウントがあってリポジトリが作れると思います。
名前を一致させる必要はないです。
ユーザー名も、リポジトリ名も一致させなくても大丈夫です。
github(ミラーリング先)のリポジトリのssh接続をコピーしておきます
tsuchinaga/go-kabusapi であれば git@github.com:tsuchinaga/go-kabusapi.git です。
gitlabで公開鍵を取得
gitlabでSettings > Repository > Mirroring repositoriesを開きます
Git repository URLにはSSHのURLを入れます。
git@github.com:tsuchinaga/go-kabusapi.git の場合、
SSH URLは ssh://git@github.com:22/tsuchinaga/go-kabusapi.git です。
先頭にssh://を付けて、ユーザー名前の:を/にかえて、ホスト名の後ろにポート:22を付けます。
Mirror directionは Push
Detect host kyesでフィンガープリントが出ることくらいは確認しておきます。
Authentication method は SSH public key
他の設定は任意で。
https://gyazo.com/e01b43e211fdded87c18feb744f0fd0f
Mirror repositoryボタンを押すと、 Mirrored repositoriesに表示されるはずです。
ここで、クリップボードのマーク 「Copy SSH public key」でSSHをクリップボードにコピーします。
https://gyazo.com/8d4d8f93ba49b48bf1799b59136141b8
これで公開鍵を取得できました。
githubに公開鍵を登録
User > Settings > SSH and GPG keys を開き、 New SSH key で公開鍵を追加します。
Titleに分かりやすい名前を付けて、Keyに公開鍵を貼り付けて保存します。
下の画像の公開鍵はわざとぐちゃぐちゃにしてますが、末尾に git@gitlab.com ってのがあると思います。
https://gyazo.com/9df546501e01ef7fc70219aac08a9c28
Add SSH keyで保存して公開鍵の登録は完了です。
疎通テスト
gitlabの Mirrored repositoriesに戻って、リロードマーク 「Update now」をクリックします。
これでミラーリングが実行されます。
ぐるぐるしてるのを数秒眺めて、ページのリロードをすれば Last update attempt と Last successful update が just nowになっていると思います
https://gyazo.com/ac6ebc6d81ba9d1d586e932b8cf8b098
もしErrorがでていたら設定に間違いがあります。
高確率でSSHのURLなので再確認をどうぞ。
githubのSSH keysでも Last used within the last week となっていることが確認できます。
おわりに
public keyを大量に登録するのは気がひけますが、とりあえず問題の解決とユーザID・パスワードの漏洩の対策としてこの方法はいいと思います。
githubがトークン認証を強要してくる件 対応としてやってますが、セキュリティの面でもメリットがあるので良いんじゃないでしょうか
#2020/12/20
更新履歴
#2020/12/21 公開