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

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

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

Terminalは、Apple社のmacOSに標準で付属しているUNIX端末エミュレータ。UNIXコマンドによってMacの操作および設定を行うことができます。

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

SSH

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

GitHub

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

バージョン管理

バージョン管理はコンピューター上にファイルとして格納されているドキュメント・プログラム・その他の情報の変更履歴等を管理するものです

Q&A

解決済

2回答

1201閲覧

githubのアカウントを複数使い分けるときにsshの鍵の問題でリモートレポジトリへのアクセスが否認される

退会済みユーザー

退会済みユーザー

総合スコア0

terminal

Terminalは、Apple社のmacOSに標準で付属しているUNIX端末エミュレータ。UNIXコマンドによってMacの操作および設定を行うことができます。

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

SSH

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

GitHub

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

バージョン管理

バージョン管理はコンピューター上にファイルとして格納されているドキュメント・プログラム・その他の情報の変更履歴等を管理するものです

0グッド

0クリップ

投稿2020/02/08 12:54

編集2020/02/08 15:03

前提・実現したいこと

githubのアカウントを複数使い分けるときにpushしようとすると別のアカウントによって否認される」という質問とエラー文が最初と乖離してきたため、別質問として投稿します。

実現したいことは、前回の質問と同様に、githubのアカウントを複数使い分けて、リモートリポジトリにpushすることです。

引き続き、「同一端末で異なるgithubアカウントにpushするときの手順」という記事に従い、前回の質問でいただいた回答とコメントをもとに進めています。

発生している問題・エラーメッセージ

pushするコマンドを打つと、以下のエラーが返されて、pushできない状態です。

Warning: Permanently added the RSA host key for IP address ‘IPアドレスの数字' to the list of known hosts. git@github.com: Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.

以下の「ここまでgithubとターミナル上で行ったこと」の最後の項目に原因があると考えていますが、

該当のソースコード

bash

1$ git push origin branch-name

ここまでgithubとターミナル上で行ったこと

  • ssh keyを作成してgithubに登録しました。

  • git config --local --listで、user.emailは2つ目のGitHubメールアドレスになっています。

  • ~/.ssh/testには秘密鍵のパスを指定しました。

  • ~/.ssh/config は、前回の質問で出たエラーを回避して記事の通りに記載しましたが、UserHostNamegit config --local --listlで表示されるuser.nameとuser.emailに書き換えるという認識で合っていますか?

同一端末で異なるgithubアカウントにpushするときの手順」という記事には、「どの項目を変更するか」までの詳しい説明はなかったので、教えていただけると助かります。

# user1 github Host github-user1 HostName github.com User git Port 22 TCPKeepAlive yes IdentitiesOnly yes IdentityFile ~/.ssh/test

補足情報(FW/ツールのバージョンなど)

ターミナル バージョン2.10

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

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

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

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

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

guest

回答2

0

git remote add origin github-user1:sample/sample.github.io.git

この様に変えるとどうなりますか?

以下、参考まで・・・。
接続の確認

$ ssh -T github-user1 Hi sample You've successfully authenticated, but GitHub does not provide shell access.

git remoteの削除

$ git remote rm origin

投稿2020/02/08 13:26

編集2020/02/08 13:51
shinami

総合スコア334

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

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

退会済みユーザー

退会済みユーザー

2020/02/08 15:06

ご回答ありがとうございます。 ``` $git remote add origin github-user1:sample/sample.github.io.git ``` とコマンドを打つと ``` fatal: remote origin already exists. ``` と返されました。 ちなみに ``` $ git config --local --list ``` で`remote.origin.url`は`git@github.com:sample/sample.github.io.git`になっています。
退会済みユーザー

退会済みユーザー

2020/02/08 15:09

``` $ ssh -T github-user1 Enter passphrase for key '/Users/username/.ssh/test': git@github.com: Permission denied (publickey). ``` となりました。
shinami

2020/02/09 00:36 編集

fatal: remote origin already exists.(リモートoriginはすでに存在します。) と出ているので私の解答欄にある様にリモートを削除を実行するとgit@github.com~は無くなりますので(確認方法は、git remote -v)再度、git remote add origin github-user1:sample/sample.github.io.gitを 実行してみてください。(git remote -vで変わっていることも確認) その上で、 ssh -T github-user1を実行しHi sample You've successfully~になっていれば git push origin ブランチ名でpushできると思います。
shinami

2020/02/09 00:44

あと、passphraseは設定していなければそのままEnterを押してください。
退会済みユーザー

退会済みユーザー

2020/02/09 09:08

お返事いただきましてありがとうございます。 ご教示いただいたように、リモートを削除した上で、git remote add origin github-user1:sample/sample.github.io.gitを実行し、「fatal: remote origin already exists.」のレスポンスはなくなり、git remote -vで変わっていることも確認しました。 passphraseも設定していないので、「$ ssh -T github-user1」コマンドも実行されましたが、やはり ``` git@github.com: Permission denied (publickey). ``` で否認されて、pushできませんでした。
guest

0

ベストアンサー

まず、git configで設定するのは、git logやgithubの履歴で表示されるユーザ名、メールアドレスで、認証には全く関係ないです。
全然関係ないアドレスを設定していても、認証には問題ありません。
(履歴に、違うアカウントのユーザ名、アドレスが入ってしまうだけです)

githubでssh認証をするときは、.ssh/configHostName github.com, User gitは固定です。
アカウント毎に変わるのはIdentityFileのところです。
Hostはアカウント毎に違う名前をつけてやります(自分がわかりやすい名前)。
Hostが変わるのにHostName github.com固定なのが、初心者にはわかりにくいかもしれません。

plain

1Host github-user1 2 HostName github.com 3 User git 4 Port 22 5 TCPKeepAlive yes 6 IdentitiesOnly yes 7 IdentityFile ~/.ssh/user1 8 9Host github-user2 10 HostName github.com 11 User git 12 Port 22 13 TCPKeepAlive yes 14 IdentitiesOnly yes 15 IdentityFile ~/.ssh/user2 16

あとは、
git clone git@github-user1:user1/foo.git
git clone git@github-user2:user2/bar.git
でやればいいです。

gitの操作に慣れていない場合は、既存のレポジトリの設定を変更するよりも、git cloneからやり直すほうが確実かつ簡単です。

投稿2020/02/09 06:28

編集2020/02/09 06:35
bsdfan

総合スコア4567

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

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

退会済みユーザー

退会済みユーザー

2020/02/09 09:14

ご回答いただきましてありがとうございます。 ~/.ssh/configについて、Host・User・HostNameの設定方法はわかりました。 「gitの操作に慣れていない場合は、既存のレポジトリの設定を変更するよりも、git cloneからやり直すほうが確実かつ簡単です。」とアドバイスいただきましたが、 ``` git@github.com: Permission denied (publickey). ``` で否認されている状態で、同じファイルをcloneしてbranchを作ったとしても、pushする2つ目のgithubのアカウントへの通信ができていない状態なので、同じコマンドを打ってbranchを作成した上で、pushができないという状況に陥る可能性が高いと考えています。
退会済みユーザー

退会済みユーザー

2020/02/09 09:15

もしくは、ローカルでのbranch作成のコマンドも問題を引き起こしている可能性があるのでしょうか。
bsdfan

2020/02/09 11:22

ssh -T -l git -i ~/.ssh/id_test(作成したprivate key) github.com で接続できますか? これができなければ、keyの作成かgithubへの登録が間違っています。 これが成功すれば、~/.ssh/configの書き方がおかしいです。
退会済みユーザー

退会済みユーザー

2020/02/09 19:20 編集

お返事ありがとうございます。 ``` $ cd ~/.ssh/ $ ls config known_hosts test test.pub ``` 上記のファイルしか~/.ssh配下にはないのですが、(作成したprivate key)の中身はどこで見つけられるのでしょうか。 現状だと「id_test」ファイルがないので、以下のようになります。 ``` $ ssh -T -l git -i ~/.ssh/id_test github.com Warning: Identity file /Users/username/.ssh/id_test not accessible: No such file or directory. git@github.com: Permission denied (publickey). ```
退会済みユーザー

退会済みユーザー

2020/02/09 19:18

「同一端末で異なるgithubアカウントにpushするときの手順」の記事では、以下の手順でssh keyを作成し、「public key」はtest.pubに保管されていることがわかりますが、「private key」のファイルはどこにあるのか明記されておらず、わからない状態です。 ssh keyの作成 ``` cd ~/.ssh ssh-keygen -f test -t rsa -C "user1@example.com" Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in test. Your public key has been saved in test.pub. ````
bsdfan

2020/02/09 21:42

作成したprivate keyがtestなら ssh -T -l git -i ~/.ssh/test github.com で試してください。
bsdfan

2020/02/10 02:43 編集

すいません。いったん上のssh -T...を試してください、は忘れてください。 現在はprivate keyが test しかないとのことなので、違うkeyで接続しに行っているということはなさそうですね。 一方で、shinamiさんとのコメントの中で、 > 「$ ssh -T github-user1」コマンドも実行されました と書かれていて、github-user1でちゃんと接続はできているように思えます。 なので、testのpublic keyはgithubに登録できていて、~/.ssh/configも正しくかけていて、testのprivate keyで接続できていると考えていいと思います。 となると、testのkeyを登録するgithubのアカウントを間違えているのではないでしょうか。
退会済みユーザー

退会済みユーザー

2020/02/10 06:09

testのkeyをもう一度作成してみて、解決できました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問