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などを手元の作業マシンで使ってください。