VPS(Linux)からMFA設定済githubプライベートリポジトリに接続してgit clone

VPSに開発やgitを扱うLinux一般ユーザーでSSH接続。Linuxのrootユーザーではない、プロジェクト専用のLinux一般ユーザーから(プライベートリポジトリ)githubへの接続という前提です。

キーペアの保存先ディレクトリを作る

mkdir /Linuxユーザーディレクトリ/.ssh/github_key_dir

キーペアを作る

ssh-keygen -t rsa -b 4096 -C "メールアドレス" -f /Linuxユーザーディレクトリ/.ssh/github_key_dir/id_rsa_github

公開鍵の中身をcatで表示させ、中身の最後尾のメールアドレスを除きコピーします。

cat /Linuxユーザーディレクトリ/.ssh/github_key_dir/id_rsa_github.pub

ブラウザでgithubにログイン、「Personal settings」➞「SSH and GPG keys」で「New SSH keys」より/Linuxユーザーディレクトリ/.ssh/github_key_dir/id_rsa_github.pubのコピーした中身を貼り付けて登録。
※github上で任意の登録名をつけられます。

/Linuxユーザーディレクトリ/.sshでconfigファイルを以下の様に作る

vi /Linuxユーザーディレクトリ/.ssh/config
 Host gthb
 HostName github.com
 IdentityFile /Linuxユーザーディレクトリ/.ssh/github_key_dir/id_rsa_github
 User git

次のコマンドにてgithubにssh接続

ssh gthb

以下の様なメッセージが表示されたら成功

Hi githubアカウント名! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.

最後の ssh gthb で Bad owner or permissions on /Linuxユーザーディレクトリ/.ssh/config がでた場合、.ssh/config のパーミッションを次のように変更します

chmod 600 /Linuxユーザーディレクトリ/.ssh/config

MFA設定済githubのプライベートリポジトリをVPSにgit clone

MFA設定されたgithubのプライベートリポジトリをVPSにgit cloneする場合、githubのユーザー名(大文字小文字は関係なし)だけでなく、githubで発行されたトークンをパスワードに入力する必要があります。トークンはブラウザでgithubにログインして、「Settings」→「Developer settings」→「Personal access tokens」→「Generate new token」で作成します。トークンは1回しか表示されないので、メモっておくか、利用する都度githubでregenerateします。

Creating a personal access token – GitHub Docs

MFAがあるため、githubのユーザーのパスワードを入力すると、git cloneが以下のようにコケます。

remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/githubユーザー名/リポジトリ名.git/'

本来、VPSの中に鍵を置くことは非推奨です!Widnows10ならpageantなどを手元の作業マシンで使ってください。