以下の内容はhttps://souiunogaii.hatenablog.com/entry/gitlab-password-sshより取得しました。


GitLab接続でユーザー名・パスワード入力を省略する設定【SSH】

※[PR]当ブログの記事の中にはプロモーションが含まれています。

GitLabの接続でユーザー名・パスワード入力を省略

・GitLabからPullするときに毎回ユーザ名とパスワードの入力を求められる。
・ユーザー名とパスワードの入力を省略する方法を教えてほしい。

こういった疑問に答えます。

本記事の内容

この記事を書いている私は、某SIerに勤務しながら、
WEB系エンジニア・インフラエンジニアに憧れて、プログラミングおよびインフラ技術の勉強をしています。

こういった私が、解説していきます。

私が実機で試したコマンドや画像を載せて書いています。
記事の信頼性担保に繋がると思います。

WEB/APサーバ―からGitLabサーバーへのpull時にユーザー名・パスワードの入力を省略するための設定

  1. WEBサーバー側で秘密鍵ファイルと公開鍵ファイルのペアを作成
  2. GitLabサーバ―側でauthorized_keysファイルに公開鍵の内容を追記
  3. git接続をSSH方式に変更
  4. GitLab画面でSSH鍵を登録
  5. WEBサーバのssh-agentに秘密鍵ファイルを登録
  6. WEBサーバー側の~/.ssh/configファイルの作成

前提

今回の環境構成は以下です。

GitLabの接続でユーザー名・パスワード入力を省略

手順①: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

GitLabの接続でユーザー名・パスワード入力を省略

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

GitLabの接続でユーザー名・パスワード入力を省略

手順⑤: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できるようになりました。

参考にしたサイト

makicamel.hatenablog.com

zenn.dev

qiita.com

qiita.com




以上の内容はhttps://souiunogaii.hatenablog.com/entry/gitlab-password-sshより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14