Cloud9からGithubへのpush方法がわからなかった話

1. 前書き

Rails Tutorialというドキュメントを読んでRuby on Railsの勉強をしているのですが、最新版の第6版は有料なので、第4版で勉強しています。ところが、そこではGitHubではなく別のサービスへpushしているので、適当に調べてGitHubの方へpushしていました。このとき、GitHubのIDとパスワードを使用してアクセスしていたのですが、2021年7月?とかからGitHubでパスワード認証が使えなくなりました。その代わりに個人アクセストークンというものを生成できるのですが、これが30字とか結構長いんですよね。以前は毎回コピペしていたのですが、流石に面倒になって調べてみてもクリティカルにCloud9からGitHubへpushする際の認証をスキップする方法がまとめられていませんでした。なので、忘備録的に書いておきます。

2. 解決方法

2.1から2.2の流れは「3. 参考記事」の「全体の流れ」の項目の記事を見れば、詳細に書いてあります。

2.1. Cloud9でsshキーを生成し、GitHubに登録

Cloud9上で以下のコマンドを入力

cd ~/.ssh
ssh-keygen
cat ~/.ssh/id_rsa.pub

これで表示されたもの(id_rsa.pub)が公開鍵です。ssh_rsaと書いてある部分(先頭)から、2個目の空白の手前までをコピーします。id_rsa(秘密鍵)も同時に.sshフォルダに生成されていますが、こちらは触れる必要はありません。

次にGitHubにアクセスし、Settings -> SSH and GPG keys -> New SSH Keyと進めていき、Title(適当なわかりやすい名前)とkey(さっきコピーした公開鍵を貼り付ける)を設定し、Add SSH Keyをクリックする。

2.2. ssh接続を実際にしてみる

cd ~/.ssh
ssh -T git@github.com

これで「Hi ~~! You've successfully authenticated, ...」と表示されればokです。

2.3. ".git/config"ファイル内のurlを変更する。

ここからが自分が苦戦したところです。認証スキップ方法のサイトによると、このurl部分を直すと良いらしい。httpsのやつをgit@github.comに直し、最後に.gitをつけてやれば完成です。 ※[remote]の欄にurlがあるのですが、urlがない場合はまだgit remote addをしていないと思うので、先に2.4を参照してください。

変更前:「url=https://github.com/xxx…」 変更後:「url=git@github.com:xxx… .git」

接続したいリポジトリの右上緑色のcodeボタンを押して、SSHタブを選択してからコピーすると楽ですが、直接書き換える場合はhttps://を消して、.comの後ろの/を:に直して、最後に.gitをつければokです。

2.4. 実際にgit pushする

同じところで躓いている人ならgit initまではしてあると思いますが一応。

git init

事前にGitHubでpushする用のリポジトリを作成しておき、以下のコマンドで接続しておく。

git remote add origin [pushするURL]

(このときのpushするURLをHTTPS接続のものではなく、最初からSSH接続のものにしていたら、2.3の作業は必要なくなります)

あとは、addしてcommitしてpushすればok。このpushの後に認証が発生しなくなっているはずです。

git add -A
git commit -m "Initialize Repository"
git push origin master

git remote add origin [URL]を鍵の登録より先にやるとエラーはくかもしれないので、エラーを吐いたらそのあたりも確認してみてください。

3. 参考記事

Rails Tutorial(第4版) - https://railstutorial.jp/chapters/beginning?version=5.1

全体の流れ - https://chibinfra-techblog.com/aws-cloud9-github-env-web-code/

認証スキップ方法 - https://halzoblog.com/github-ssh/