通常,SSH公開鍵の作成はここの手順で行う.この場合の公開鍵は他のサービスでも使うかもしれず共用のものとなる.
ここではGit専用のSSH公開鍵を作成し,仮に再作成した場合でも他のサービスに影響がないようにする.
SSH設定
SSH公開鍵の作成
鍵タイプrsa,鍵のファイル名をgitlab(公開鍵:gitlab.pub,秘密鍵:gitlab)とした場合のコマンドは以下のようになる.
$ ssh-keygen -t rsa -f ~/.ssh/gitlab
rsaはデフォルトなので-t rsaはいらないかもしれない.
ちなみにさらに色々書くと以下のようになる.
$ ssh-keygen -t rsa -f ~/.ssh/gitlab -b 2048 -C "メールアドレス"
以下のコマンドで鍵ファイルが作成されていることを確認する.
$ ls ~/.ssh/
利用のための設定
設定ファイルは以下となる.
- ~/.ssh/config
configファイルの最後に以下を追記する.configファイルがなければ新規作成して以下を記載する.
HOST gitlab.mylab.ac.jp
HostName gitlab.mylab.ac.jp
IdentityFile ~/.ssh/gitlab
User git
ここで接続先となるGitLabは便宜的に以下のようにしている.実際に使用している名前に置き換えること.
- GitLabのFQDN
- gitlab.mylab.ac.jp
config各行の説明は以下のとおり.
- HOST [接続名]
- 使用する接続名.例えば ssh gitlab.mylab.ac.jp で設定どおりの接続が可能.
- HostName [接続先FQDN or 接続先IP]
- 接続先の指定.
- IdentityFile [秘密鍵]
- 秘密鍵の指定.
- windowsだと,"IdentifyFile"かもしれない.
- User [User名]
- 接続ユーザを指定.ssh user@接続先のuserに相当.git cloneで使用するのでgitを指定.
- その他
- Port [ポート番号]
- ポート番号も指定可.
- Port [ポート番号]
GitLabでの設定
ここの手順にもあるように,作成したgitlab.pubの中身をGitLab上の然るべきところに張り付けておく.
困ったときに
git@なのにパスワードを求められる.
httpsアクセスではなくsshアクセスで,公開鍵も設定しているのにパスワードを求められる場合に考えられること.
研究室内からみたgitlabのIPと研究室外からみたgitlabのIPがdnsのせいで異なっていたりする.この場合,configのHostNameがFQDNだと研究室外からpush出来なかったりする.
解決方法
~/.ssh/configのHostNameをIPで指定する.
解決できたか確認
以下のコマンドで,パスワードを求められず,Welcome なんとか!などのメッセージが出てればOK
$ ssh -vT git@[gitlabのFQDN]