LoginSignup
1
1

gitlabにSSH接続

Last updated at Posted at 2023-08-15

SSHキーを作成する
今回、認証方式はRSAを採用する。

ssh-keygen -t rsa

SSHキーの保管場所を指定したい場合は、指定する。

Enter file in which to save the key (/c/Users/future/.ssh/id_rsa):

厳重の暗号化したいなら、パスフレーズを設定する。面倒なら何も入力せずEnter2回で飛ばす。

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

SSHキーの保管場所が表示されるのでメモしておく。(大体ユーザのカレントディレクトリ)
ssh-keygen_1.png

Gitlabに公開鍵を登録
自分のユーザアイコン>Prefernces>SSH Keysの順で画面遷移。(ちょいちょいページの場所変わってるっぽいので頑張って探して)

Add new keyを押下。

Keyに先ほど作成したSSHキーの公開鍵(.pub)の方の中身を貼り付ける。
ssh-keygen_2.png
Add keyを押下して登録完了。

SSH接続準備
ssh-agentに秘密鍵を登録
Windowsユーザは手動でssh-agentに秘密鍵を登録しないといけないらしいので登録する。

ssh-add -lなどを入力して、以下のメッセージが出た場合、ssh-agentが起動していないので先ずはssh-agentを起動する。

Could not open a connection to your authentication agent.

ssh-agentを起動。

eval `ssh-agent`

ssh-agentに秘密鍵を登録する。パスはSSHキー生成時にメモしたもの。

ssh-add /c/Users/[Windowsのユーザ名]/.ssh/id_rsa

configファイルを生成
公開鍵と秘密鍵が格納されているフォルダにホスト名、秘密鍵パス等を設定するconfigという名前(拡張子なし)のファイルを作成する。
中身を以下のように編集する。IdentityFileは秘密鍵のパス。

Host gitlab
    HostName gitlab.com
    User git
    IdentityFile /c/Users/[Windowsのユーザ名]/.ssh/id_rsa

SSH接続テスト
以下コマンドを入力。初回はいろいろ表示されるが、yesを入力していけばOK。

ssh -T git@gitlab

最終的に以下のメッセージが出ていたら接続成功。

Welcome to GitLab, [gitlabのユーザ名]!

これでリモートからクローンしたり、プッシュしたりできるようになっているはず。

git clone

git clone git@gitlab.com:[グループ]/[プロジェクト].git

git push

git remote add origin git@gitlab.com:[グループ]/[プロジェクト].git
git puth origin main

※リモートの指定にはhttps://...ではなく、git@...の方のURLを使用する。

おまけ

Gitにリモート接続する際にデフォルト以外のフォルダに格納してある鍵を使用する方法

基本的にSSHキーはカレントディレクトリの.sshフォルダに保存していく。
(Linux系だと/home/[Linuxのユーザ名]/.ssh、Windowsだと/c/Users/[Windowsのユーザ名]/.ssh)

なので、gitコマンドもデフォルトは上記パスの.sshフォルダ内から鍵のパスを設定するconfigファイルや鍵を探す。

しかし、諸々の都合上どうしてもデフォルト以外のフォルダに格納してある鍵を使用したいこともあるので以下にメモしておく。

環境変数GIT_SSH_COMMANDを使用する
環境

  • OS: Amazon Linux 2
  • Gitバージョン: 2.9.5

home/[Linuxのユーザ名]/gitlab/.sshに格納してある秘密鍵を使用したい。
ユーザのホームディレクトリで以下コマンドを叩く。

export GIT_SSH_COMMAND="ssh -i $(pwd)/gitlab/.ssh/id_rsa -F /dev/null -o StrictHostKeyChecking=no"
  • -i: 相対パスでも指定出来るが、サブモジュールの取り込み等する際に参照できなくなるため絶対パス推奨。pwdコマンドで現在位置までのパスを出力させると楽。
  • -F: /dev/nullはconfigファイルを指定しないの意味。
  • -o StrictHostKeyChecking=no: 初回のSSH接続の際に対話モードで確認されるやつを飛ばす。

ちなみにgit config core.sshcommandで設定するという方法もあるそうだが、今回の環境ではうまくいかなかった。

1
1
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
1
1