CrescPia

Weekly Learnings

今週の学びのメモです。

  • git clone で認証入力省略
  • ポートが既に使われているとき

git clone で認証入力省略

git clone するときには対象リポジトリの URL を GitLab とか GitHub の GUI からコピーしてきます。 GitLab GUI

HTTPS を利用していると認証のユーザー名とパスワードの入力が求められてちょっと手間です。
SSH ができればいいのですが、VPS 上の Docker で運用している都合で SSH のポート番号がデフォルトではありません。
(デフォルトはホストが使用しているので。)
デフォルトでないと、git clone の時にポート番号を書き足さなくてはならなくてこれも面倒です。

認証情報の自動入力

ホームディレクトリに .netrc ファイルを用意して必要な情報を設定しておくと git clone の時に自動で認証してくれます。

machine example.com
login your-username
password your-Personal-Access-Token
  • machine: 接続するホスト名
  • login: ユーザー名
  • password: パスワード(Personal Access Token)

※パスワードはログインのパスワードではなくて Personal Access Token を作成して利用します。
Personal access tokens | GitLab Docs

ホストが複数ある場合は、.netrc ファイル内に machine, login, password の 3 点セットで複数記述することも可能。

.netrc ファイルは平文でパスワードを記述することになるので取り扱いに十分注意する。
アクセス権限を設定しておく。

$ chmod 600 ~/.netrc

libcurl を利用している

.netrc は Git の固有の設定ファイルというわけではありません。
Git はファイルの転送に libcurl を利用しているそうで .netrc ファイルは libcurl の方の仕組みを利用しています。
libcurl を利用しているツールでは同じ仕組みが利用できそうなので、.netrc ファイルのことを頭の隅に置いておく。
curl - How To Use
curl コマンドでも .netrc が利用できます。

(追記)Personal Access Token の期限切れに注意

何日か経つと Personal Access Token は期限切れになる。
git clone しようとすると Username と Password を聞かれるようになる。こうなると期限切れとなった可能性が高い。
ログインに失敗して以下のようなメッセージが表示される。

remote: HTTP Basic: Access denied. If a password was provided for Git authentication, the password was incorrect or you're required to use a token instead of a password. If a token was provided, it was either incorrect, expired, or improperly scoped.

改めて Personal Access Token を作成して .netrc ファイルを更新しておく。



ポートが既に使われているとき

Web サービスを起動してみたらポートが既に使われている、となったときの調べ方。

$ sudo lsof -i :<ポート番号>

これでポートを利用しているプログラムがわかります。
(でも大概は Docker です・・・。)