質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Q&A

解決済

1回答

3012閲覧

githubにpushできない

cunwe

総合スコア65

SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

0グッド

1クリップ

投稿2021/10/26 15:37

編集2021/10/28 07:53

現状

git init git add . git commit -m "my first push" git remote add origin https://github.com/hoge/fuga.git git remote -v

まではうまく行ったのですがその後git push -u origin masterを実行すると

remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information. fatal: Authentication failed for 'https://github.com/norichin/blog_django.git/'

と表示されてしまいました。

やったこと

そこでfatalエラーをググるとこちらの記事が見つかり、この記事によるとssh -T git@github.comを実行するとHi hoge! You've successfully authenticated, but GitHub does not provide shell access.と表示されないとおかしいそうなのですが、僕の場合はgit@github.com: Permission denied (publickey)と表示されてしまいました。

そして今度はssh -T git@github.comをググるとこちらの記事(やこちらの記事)が見つかり、自分の環境で確認してみると~/.ssh/configに

Host github.com IdentityFile ~/.ssh/github User git

の記載がなかったので追記し、/.ssh/githubはなく代わりに/.ssh/known_hostsというのがあったので中身を見ると

github.com,{IPアドレス},ssh-rsa hogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehoge {IPアドレス},ssh-rsa hogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehoge

となっていたのでファイル名をknown_hostsからgithubに変え、再びssh -T git@github.comを実行すると

The authenticity of host 'github.com ({先程の2つ目のIPアドレス})' can't be established. RSA key fingerprint is SHA256:hogehogehogehogehogehogehogehoge. Are you sure you want to continue connecting (yes/no/[fingerprint])?

と表示され、このまま続けていいのか自分の状況がよくわからなくなっており、どなたかお助けいただけますと非常に嬉しいです。よろしくお願いいたします。環境はMac OS BigSurです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

SSHログインするにはSSHキーというものを作ってGitHubに登録する必要があります。

そのやり方やそもそもどういうことなのか、はGitHub - git push origin masterの不明な挙動 | teratail(テラテイル)の自分の回答より以下に一部転載します。

なんでパスワードでログインできないのかも一応書いてありますのでご一読いただければ。


GitHubにはパスワードによるログインはできません。
SSH接続することをおすすめします。
以下にやり方が書いてあります。

GitHubでssh接続する手順公開鍵・秘密鍵の生成から - Qiita

【追記】
環境情報を見落としておりました。
Windows 10の場合はこちらが参考になると思います。
失礼しました。

【初心者向け】GitHubにSSH接続する設定方法 for Windows 10 | Techs Report

基本的な手順は

  1. 手元のPCでSSH Key(パスワードの代わり)を生成する
  2. 公開鍵と秘密鍵が出来るので、公開鍵をGitHubに登録する

だけです。
ただし場合によっては追加でいくつか設定する必要があります(上記の記事に書かれています)。
上記の記事をよく読んで、試してみて出来なければまた質問してください。

SSH接続をすると、Gitを使ってGitHubアカウントにログインしてきたPCがちゃんとそのGitHubアカウントの所有者のものかをGitHubが確認することができます。
と同時に、Gitは事前に設定してあるSSHの情報を使えば、git pushの度に一々パスワードやアカウント名を聞かなくて済みます。
毎回入力するパスワードの代わりに事前にSSHキーを設定しておいて、それを使ってGitHubにログインするわけです。

この設定はPC毎に行う必要はありますが、1度設定してしまえばアカウントやパスワードの入力を省略できてセキュアなためおすすめ、というわけです。

つい先日までは、GitのリモートリポジトリにGitHub上のリポジトリを指定している場合、GitHubのユーザー名とパスワードを入力してログインすることで同期できるようになっていました。
しかし、セキュリティの観点からパスワードを使ったログインが廃止され、従来からあったSSHキーを登録してSSH接続する方法か、GitHub上でアクセストークンを発行しそれを使ってログインする方法でしかGitHubにログイン出来ないようになりました。
そのため、Gitがユーザーにパスワードを入力してもらいそれを使ってログインしようとすると、GitHubから「パスワードによるログインが廃止された」旨のメッセージが送り返され、ユーザーに該当のエラーが表示されるのです。

投稿2021/10/26 15:43

fj68

総合スコア752

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cunwe

2021/10/26 16:02

ご回答くださりありがとうございます。質問文に記載させていただきました `Hi hoge! You've successfully authenticated, but GitHub does not provide shell access.`というエラーが表示されているということはSSHによるアクセスができないということではないでしょうか...?
fj68

2021/10/26 20:17 編集

いえ、そのメッセージが表示されるならSSH接続出来ていますよ。 SSHは元々、ネット上にあるPCにログインして操作するためのコマンドです。GitHubはログインする部分を使っているだけで、Shell Access、つまりコマンドを送ってGitHubのサーバを操作することは出来ないようになっています。 そのため「認証に成功しました!GitHubのサーバは操作させないけどね」というメッセージがGitHubから送り返されてきて、それが表示されるわけです。 あとはgit pushしてみて、成功すればOK、まだパスワードを聞かれるようならgithub.comに接続する時にSSHを使うよう、~/.ssh/configの設定をしたり、.gitconfigの設定をしたりしましょう。 詳細なやり方は回答に貼ったリンク参照です。 あとちょっとです、頑張ってください!
cunwe

2021/10/27 03:00 編集

そういうことなのですね、ありがとうございます! `The authenticity of host 'github.com ({先程の2つ目のIPアドレス})' can't be established. RSA key fingerprint is SHA256:hogehogehogehogehogehogehogehoge. Are you sure you want to continue connecting (yes/no/[fingerprint])?` をyesにすると `Warning: Permanently added 'github.com,({先程の2つ目のIPアドレス})' (RSA) to the list of known hosts. ssh_dispatch_run_fatal: Connection to ({先程の2つ目のIPアドレス}) port 22: Broken pipe`と表示されましたが、この仕組みについて少しご解説いただいてもよろしいでしょうか。ちなみにpush自体はできたようです、ありがとうございます!
cunwe

2021/10/27 02:53 編集

と言いますか、known_hostsファイルにIPアドレスとssh-rsaが2組もあるのはおかしいでしょうか?1Githubアカウントに対し、1IPアドレス・1ssh-rsaでしょうか?またこのIPアドレスはなんのIPアドレスでしょうか?質問が多くてすいません、。
fj68

2021/10/27 04:17

pushできたとのこと、よかったです。 おめでとうございます。 known_hostsというのは、過去に接続したことがあるホストの公開鍵を記録してあるファイルです。 それぞれのホストに接続するときに、その公開鍵に紐づく秘密鍵が手元にあるか検証することができます。これにより、サーバ側の鍵が知らないうちに変わっていたら気づくことができるというわけです。 そして、始めて接続するホストはknown_hostsに登録されていませんから、「Warning: Permanently added 〜」という警告が表示されます。「知らないホストだったからknown_hostsに追加しておいたよ」という程度の意味です。知らず知らずのうちに変なホストに接続していないか確認することができます。 以上を含め、SSHについて詳しくは以下がまとまっていてわかりやすいかと。 エンジニアなら知らないとヤバいSSHの基礎 https://blog.mothule.com/tools/ssh/tools-ssh-basic 「ssh_dispatch_run_fatal: 〜」については詳しく存じ上げませんが、sshdによって接続が切られたのではないでしょうか。 PCリソースの都合やタイムアウトによる切断などいくつか原因は考えられますが、再度接続しなおせばいいだけなのであまり気にしなくても大丈夫です。 ちなみに、こういった「エラーっぽいなにか」が表示されたときは ①よく読む(意外と簡単な英語で書かれている上、参考文献のURLなどがあることも) ②コピペしてググってみる ③たいして情報が出てこず支障がないようなら気にしない ④支障があるようならエラーを出したソフトウェアのソースを読む とすればよいでしょう。
cunwe

2021/10/27 12:52

参考リンクのご添付ありがとうございます。 githubにはpushできたのですが、GCPで立てたインスタンスにgit cloneしようとすると `Cloning into 'blog_django'... Username for 'https://github.com': hoge Password for 'https://hogehoge@github.com': remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information. fatal: Authentication failed for 'https://github.com/hoge/hogehoge.git/'` と先ほどと同じような表示が出てしまったのですが、仮想サーバーにssh接続するときも~/.ssh/configとかに何か設定を書かなくてはいけないでしょうか...?
fj68

2021/10/27 17:01 編集

うーむ、すみません、わかりません…… GCPにはあまり詳しくなくて…… ただ、調べて見た限りでは、GCPのレポジトリを操作するにはsshやgcloudコマンドを使ってPCをローカル認証(ログイン)する必要があるようです。その上でgit pushやgcloudコマンドを実行し、ローカルレポジトリからGCPへpushするという流れです。GCPのインスタンスの中に入ってgithubなどの外部リソースからGCPインスタンスにgit cloneするのではなく、GCPインスタンスのレポジトリをローカルのremoteに設定して、ローカルからそこにpushするんですね(GCPをGitHubだと思えば、GitHubのサーバの中からgit cloneするのではなくGitHubをremoteに設定してpushするというのと同じ仕組みになっているわけです)。 方法は以下が参考になるかと。 既存のレポジトリからコードをPush | Cloud Secure Repositoriesのドキュメント https://cloud.google.com/source-repositories/docs/pushing-code-from-a-repository ローカル認証を設定する | Cloud Secure Repositoriesのドキュメント https://cloud.google.com/source-repositories/docs/authentication 上の方法でダメそうであれば、新たな質問としてteratailに立ててみるともっと詳しい方から回答を貰えると思います。 頑張ってください!
cunwe

2021/10/27 17:47

今こちらに関して別で質問立ててますが、大変詳しく教えてくださりありがとうございます!添付してくださったリンクを読みつつ、詳しい方からの回答をお待ちしたいと思います!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問