Linux あれこれ

Linux 関連(一部 Windows11 )の備忘録です。

Lubuntu 20.10 にて、GitHub のプルリクエストで「SSH」接続を使う準備を行う〈H109〉

登録日: 2021-01-29 更新日: 2021-01-29

「Lubuntu 20.10」をUSB メモリにインストール しました。

前回 は「Lubuntu 20.10」にて「Update Notifier」と「Apply Full Upgrade」の国際化をプルリクエストしました。そのとき「git clone」でのURL 指定は、いつものように「HTTPS」のURL を使いました。(「HTTPS」で接続)

-

今年の夏あたり、GitHub の認証方式の強化があるようです。 それに伴い、端末からの「git push」時に、GitHub のアカウントのパスワードを使っての認証が使えなくなりそう。

「git clone」で「SSH」接続のURL を使うと、今まで通りにプルリクエストができるようなので、 「SSH」接続での準備のやり方を調べてみました。その備忘録です。

-

ちなみに、ダウンロード目的の「git clone」など、プルリクエストをしない使い方なら影響はなさそう。

-

-

「目次」

-


しばらくすると、Git 操作の認証でアカウントパスワードが使えなくなるみたい:

前回、端末から「git (2.27.0)」コマンドを使用してパスワード入力を伴う「git push」を使いましたが、その操作についての注意勧告のメールが来ました。

2021年8月13日以降、Git のパスワードを使用した基本認証は廃止され、まもなく機能しなくなるらしく、 アカウントの「2要素認証」を有効にしなさいとのこと。

Token authentication requirements for Git operations

ちなみに、Manjaro だと:

$ git --version
git version 2.30.0

→「Lubuntu 20.10」のgit のバージョンは低いようです。アップするとコマンドのパスワード入力時に「個人アクセストークン」を入れられるようになるのかな。

-

影響を受けるワークフロー

-

推奨される回避策:

  • HTTPS(推奨)←GUI での場合?

  • SSHキーを使用

  • 2要素認証: テキストメッセージ(ケータイによるSMS メッセージ受信)によるコード入力

  • 2要素認証: スマホにTOTP アプリをインストール

  • 有料プラン

-

とりあえずは、SSH キーをパソコンに追加登録しておくと安心かな:

GitHub に SSH で接続する

-

SSH キーがすでに存在するかを確認:
$ ls -1 ~/.ssh
ls: '/home/ubn/.ssh' にアクセスできません: そのようなファイルやディレクトリはありません

ファイルが存在する場合:

$ ls -1 ~/.ssh
id_ed25519
id_ed25519.pub
known_hosts

-

別のSSH キーを使いたいか、まだ持っていない場合は、新しいSSH キーを生成します:
$ ssh-keygen -t ed25519 -C "GitHub のメールアドレス"

Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/ubn/.ssh/id_ed25519): ←(Enter キー)デフォルトの場所にファイルを保存
Created directory '/home/ubn/.ssh'.
Enter passphrase (empty for no passphrase):       ←(パスワード入力)
Enter same passphrase again:                       ←(パスワード入力)
Your identification has been saved in /home/ubn/.ssh/id_ed25519
Your public key has been saved in /home/ubn/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxx GitHubのメールアドレス
The key's randomart image is:
+--[ED25519 256]--+
|             o*=.|
|      E   . o=o*+|
|       . ..+ooB+o|
|        ....o.=O=|
|        S   +o=B=|
|           . ===.|
|            =o+.o|
|             =...|
|              ...|
+----[SHA256]-----+

→~/.ssh に入力したメールアドレスをラベルに使った新しい SSH キーが作成されます。

-

ssh-agent を開始しておきます:
$ eval "$(ssh-agent -s)"
Agent pid 2515

-

SSH プライベートキーを ssh-agent に追加:
$ ssh-add ~/.ssh/id_ed25519
Enter passphrase for /home/ubn/.ssh/id_ed25519:        ←(パスワードを入力)
Identity added: /home/ubn/.ssh/id_ed25519 (GitHubのメールアドレスが表示)

-

SSH キーを GitHub アカウントに追加

-

SSH 公開鍵」を表示:
$ cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AAAxxxxxxxx〜xxxxxxxxxxxxxxx/h GitHubメールアドレス

→表示された「SSH 公開鍵」を範囲選択して、右クリック→「コピー」としてクリップボードにコピーします:

-

GithUB の任意のページでサインイン

GithUB の任意のページをブラウザで開きます。

ページ右上の「横3本」をクリック→「Sign in」→「Sign in to GitHub」画面

→登録している「Eメールアドレス」と「パスワード」を入力して、サインインします。

→サインインされると、画面右上に自分が登録した、自分のアイコン(アバター)が表示されます。

-

右上の自分のアイコン(アバター)をクリック

「Settings」→「Public profile」画面

左側の「Account settings」にある「SSH and GPG keys」をクリック

右の緑色の「New SSH key」または 「Add SSH key」をクリック

SSH keys / Add new」画面

[Title]に、使っているパソコンがわかりやすい説明を追加:

Manjaro Xfce GitHub

[Key]にて、右クリック→「貼り付け」で、クリップボードにコピーした「キー」を貼り付け:

ssh-ed25519 AAAxxxxxxxx〜xxxxxxxxxxxxxxx/h GitHubのメールアドレス

[Add SSH key] をクリック

-

SSH 接続をテストします

SSH 接続をテストする

SSH キーをセットアップして GitHub のアカウントに追加した後の接続をテストします。

$ ssh -T git@github.com

The authenticity of host 'github.com (52.69.186.44)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no/[fingerprint])? 

→表示されるメッセージのフィンガープリントがGitHubRSA公開鍵フィンガープリントと一致することを確認します。

  • GitHub の公開鍵のフィンガープリントは次のとおりです。
    SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8 (RSA)
    SHA256:br9IjFspm1vxR3iA35FWE+4VTyz1hYVLIE2t1/CeyWQ (DSA)

→含まれている場合は、yesと入力します。

「yes」

Warning: Permanently added 'github.com,13.114.40.48' (RSA) to the list of known hosts.
Hi ユーザー名! You've successfully authenticated, but GitHub does not provide shell access.

和訳:

警告:既知のホストのリストに「github.com、13.114.40.48」(RSA)を恒久的に追加しました。 こんにちは「ユーザー名」! 認証に成功しましたが、GitHub はシェルアクセスを提供していません。

→Hi ユーザー名! のメッセージが表示されれば公開鍵の設定はOK で、SSH 接続もできました。

-


端末から、SSH 接続を使ってみます:

参考:

(初心者向け)GitHubアカウントにターミナルでログイン(SSH接続)する

-

Git の初期設定:
$ git config --global user.name "githubに登録したユーザー名"
$ git config --global user.email "githubに登録したメールアドレス"

-

Git の初期設定の確認:
$ git config -l

user.email=入力したメールアドレス
user.name=入力したユーザー名

-

URL の与え方で「SSH」で接続するか、「HTTPS」で接続するかを指定します。

-

「git clone」時に、HTTPS で接続したい場合:
  • 指定するURL は github のサイトにて、HTTP をクリック、右のボタンでコピーできます。
$ cd ~/Git2/
[~/Git2]$ git clone https://github.com/ユーザー名/lubuntu-update-notifier.git

→push する時にユーザー名とパスワードを求められるので、github のユーザー名とログインパスワードを入力します。

-

「git clone」時に、SSH で接続したい場合:
  • 指定するURL は github のサイトにて、SSH をクリック、右のボタンでコピーできます。
$ cd ~/Git2/
$ git clone git@github.com:ユーザー名/lubuntu-update-notifier.git

→push する時にパスワードを求められるので、SSH の公開鍵を作成した時のパスワードを入力します。

-

1. 後から、「git push」などのリモートリポジトリとのやりとりをSSH 接続に変更したいとき:
$ git remote set-url origin git@github.com:ユーザー名/lubuntu-update-notifier.git

-

2. 後から、「git push」などのリモートリポジトリとのやりとりをHTTPS 接続に変更したいとき:
$ git remote set-url origin https://github.com/ユーザー名/lubuntu-update-notifier.git

-

正しく登録できたかの確認:

$ cd ~/Git2/
$ git remote -v

-

-


まとめ

GitHub でプルリクエストすることも少なくなりました。 ただ、自分のアカウントページにpush することはありそうなので、備忘録として残しました。

-

-


目次

先頭

-


-