
・GitLabからPullするときに毎回ユーザ名とパスワードの入力を求められる。
・ユーザー名とパスワードの入力を省略する方法を教えてほしい。
こういった疑問に答えます。
本記事の内容
この記事を書いている私は、某SIerに勤務しながら、
WEB系エンジニア・インフラエンジニアに憧れて、プログラミングおよびインフラ技術の勉強をしています。
こういった私が、解説していきます。
私が実機で試したコマンドや画像を載せて書いています。
記事の信頼性担保に繋がると思います。
- 本記事の内容
- WEB/APサーバ―からGitLabサーバーへのpull時にユーザー名・パスワードの入力を省略するための設定
WEB/APサーバ―からGitLabサーバーへのpull時にユーザー名・パスワードの入力を省略するための設定
- WEBサーバー側で秘密鍵ファイルと公開鍵ファイルのペアを作成
- GitLabサーバ―側でauthorized_keysファイルに公開鍵の内容を追記
- git接続をSSH方式に変更
- GitLab画面でSSH鍵を登録
- WEBサーバのssh-agentに秘密鍵ファイルを登録
- WEBサーバー側の
~/.ssh/configファイルの作成
前提
今回の環境構成は以下です。

手順①:WEBサーバー側で秘密鍵ファイルと公開鍵ファイルのペアを作成
cd ~/.ssh
ssh-keygen
[jenkins@sv-neptune ~]$ cd ~/.ssh [jenkins@sv-neptune .ssh]$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/jenkins/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/jenkins/.ssh/id_rsa. Your public key has been saved in /home/jenkins/.ssh/id_rsa.pub. The key fingerprint is: SHA256:●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● jenkins@sv-neptune The key's randomart image is: +---[RSA 3072]----+ |.o.. .BX==o | (途中省略) | E. | +----[SHA256]-----+
手順②:GitLabサーバ―側でauthorized_keysファイルに公開鍵の内容を追記
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
GitLabサーバにSSH接続できるかテスト
[jenkins@sv-neptune .ssh]$ ssh -i ~/.ssh/id_rsa jenkins@sv-mars The authenticity of host 'sv-mars (192.168.1.114)' can't be established. ECDSA key fingerprint is SHA256:●●●●●●●●●●●●●●●●●●●●●●●●●●●● Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'sv-mars,192.168.1.114' (ECDSA) to the list of known hosts. ################################################## # # .MMMp .MMM] .MMMb MMMMMMMMm. .JMMMMMMM]. # .MMMM| .MMMM] .MM@MMb MMM (MM% gMM,. .'. # .MM[MM+M@(MM] dM@ JMM, MMM((JMMD .WMMMMMN&.. # .MM).MM# (MM] .MMNggMMN. MMM"TMMm. . ?7TMMN. # .MM) (MM] .MMf~~~?MMb MMM ,MMN, dNg...(MMt. # .""' ,""' 7"" ?""! 7"" """^ ?"""""! . # # SV-MARS [192.168.1.114] CentOS8.2 # GitLab # ################################################## Last login: Sun Nov 8 16:35:25 2020 from 192.168.1.101
現状のGitLabサーバへのpull実行時
git pull origin master
[jenkins@sv-neptune .ssh]$ cd /home/www/html/green [jenkins@sv-neptune green]$ git pull origin master Username for 'http://gitlab.sv-mars.com': satonaka ←★★★ユーザー名を入力 Password for 'http://satonaka@gitlab.sv-mars.com': ←★★★パスワードを入力 From http://gitlab.sv-mars.com/planet-group01/green * branch master -> FETCH_HEAD Already up to date.
手順③:git接続をSSH方式に変更
現状の接続方式の確認
git remote -v
[jenkins@sv-neptune green]$ git remote -v origin http://gitlab.sv-mars.com/planet-group01/green.git (fetch) origin http://gitlab.sv-mars.com/planet-group01/green.git (push)
http://~ になっています。
SSH接続方式に変更
git remote set-url origin git@gitlab.sv-mars.com:planet-group01/green.git
git remote -v
[jenkins@sv-neptune green]$ git remote set-url origin git@gitlab.sv-mars.com:planet-group01/green.git [jenkins@sv-neptune green]$ git remote -v origin git@gitlab.sv-mars.com:planet-group01/green.git (fetch) origin git@gitlab.sv-mars.com:planet-group01/green.git (push)
しかし、これだけでは、まだ以下のようになってしまい、パスワード無しでの接続ができません。
[jenkins@sv-neptune green]$ git pull origin master The authenticity of host 'gitlab.sv-mars.com (192.168.1.114)' can't be established. ECDSA key fingerprint is SHA256:●●●●●●●●●●●●●●●●●●●●●● Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'gitlab.sv-mars.com' (ECDSA) to the list of known hosts. git@gitlab.sv-mars.com's password: Permission denied, please try again. git@gitlab.sv-mars.com's password: Permission denied, please try again. git@gitlab.sv-mars.com's password: git@gitlab.sv-mars.com: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
手順④:GitLab画面でSSH鍵を登録
設定>SSH鍵

キーの入力欄に、公開鍵ファイル「id_rsa.pub」をエディタで開いて丸ごとコピー貼り付けします。

手順⑤:WEBサーバのssh-agentに秘密鍵ファイルを登録
ssh-add ~/.ssh/id_rsa
ssh-add -l
[jenkins@sv-neptune green]$ ssh-add ~/.ssh/id_rsa Could not open a connection to your authentication agent. [jenkins@sv-neptune green]$ ssh-add -l Could not open a connection to your authentication agent.
Could not open a connection to your authentication agent.というエラーになってしまい、上手くいきません。
eval ssh-agent コマンドを実行
eval `ssh-agent`
[jenkins@sv-neptune green]$ eval `ssh-agent` Agent pid 146037
再度、ssh-add を実行
ssh-add ~/.ssh/id_rsa
ssh-add -l
[jenkins@sv-neptune green]$ ssh-add ~/.ssh/id_rsa Identity added: /home/jenkins/.ssh/id_rsa (jenkins@sv-neptune) [jenkins@sv-neptune green]$ ssh-add -l 3072 SHA256:●●●●●●●●●●●●●●●●● jenkins@sv-neptune (RSA)
今度はIdentity added となって上手くいきました。
手順⑥:WEBサーバー側の~/.ssh/configファイルの作成
cd ~/.ssh
touch config
vi config
[jenkins@sv-neptune green]$ cd ~/.ssh [jenkins@sv-neptune .ssh]$ touch config [jenkins@sv-neptune .ssh]$ vi config
Host gitlab.sv-mars.com
HostName gitlab.sv-mars.com
User jenkins
IdentityFile ~/.ssh/id_rsa
git pullを実行してみる
git pull origin master
[jenkins@sv-neptune green]$ git pull origin master Bad owner or permissions on /home/jenkins/.ssh/config fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
どうやら、.ssh/configファイルのパーミッションを直す必要があるみたいです。
~/.ssh/config のパーミッションを600に変更
chmod 600 ~/.ssh/config
[jenkins@sv-neptune green]$ chmod 600 ~/.ssh/config
あらためて、git pullを実行してみる→ようやく成功
git pull origin master
[jenkins@sv-neptune green]$ git pull origin master From gitlab.sv-mars.com:planet-group01/green * branch master -> FETCH_HEAD Already up to date.
試行錯誤しながら、何とかGitLabサーバにSSHで接続してpullできるようになりました。