ssh-keyを使用してパスワードなしでGitHubにプッシュする


215

パスワードなしでSSH鍵ペアを生成し、公開鍵をGitHubに追加しました。

との接続

user@dev:/var/www/project# ssh -T git@github.com
Hi User! You've successfully authenticated, but GitHub does not provide shell access.

成功し、キーの名前を変更すると失敗しました。

しかし、変更をプッシュしたい場合でも、ユーザー名とパスワードの組み合わせを尋ねられます。

パスワードなしでプッシュする方法はありますか?


9
https://github...リモコンで使用していないことを確認してください。また、git@github...フォーマットに従う必要があります。
cjc343 2013

回答:


419

ユーザー名とパスワードの入力を求められている場合、オリジンリモートはSSH URLではなくHTTPS URLを指しています。

sshに変更します。

たとえば、GitのようなGitHubプロジェクトにはHTTPS URLがあります。

https://github.com/<Username>/<Project>.git

そしてSSHのもの:

git@github.com:<Username>/<Project>.git

できるよ:

git remote set-url origin git@github.com:<Username>/<Project>.git

URLを変更します。


4
これで解決しましたが、なぜGithubがデフォルトで新しいリポジトリのリモートエンドをhttp URLにポイントするようにアドバイスするのか、私は自分自身に尋ね続けます。リポジトリを最初から作成したところ、gitのURLではなく、httpsのリモートURLを設定するオプションが表示されました。
Preslav Rachev 2017年

2
httpsのURLを適切なgitに自動的に変更する簡単なワンライナーシェルコマンドを次に示します(github urlでのみ機能します!):git remote set-url origin $(git remote show origin | grep "Fetch URL" | sed 's/ *Fetch URL: //' | sed 's/https:\/\/github.com\//git@github.com:/')
Christopher Shroba

11

さらに要旨としては、ユーザー名を省略する必要があるようです

git remote set-url origin git@gist.github.com:<Project code>

10

実際にSSH URLを使用しているが、git push時にユーザー名とパスワードの入力を求められる場合:

git remote set-url origin git@github.com:<Username>/<Project>.git

次の方法でトラブルシューティングを試す必要があります。

ssh -vT git@github.com

以下に出力例を示します。

...
debug1: Trying private key: /c/Users/Yuci/.ssh/id_rsa
debug1: Trying private key: /c/Users/Yuci/.ssh/id_dsa
debug1: Trying private key: /c/Users/Yuci/.ssh/id_ecdsa
debug1: Trying private key: /c/Users/Yuci/.ssh/id_ed25519
debug1: No more authentication methods to try.
Permission denied (publickey).

私は実際に以前に公開鍵をGitHubにすでに追加しており、ローカルにも秘密鍵を持っています。ただし、私の秘密鍵の名前はとは異なり/c/Users/Yuci/.ssh/github_rsaます。

サンプル出力によると、Gitはを試行/c/Users/Yuci/.ssh/id_rsaしていますが、これはありません。したがって、同じディレクトリにコピーgithub_rsaするだけid_rsaです。

cp /c/Users/Yuci/.ssh/github_rsa /c/Users/Yuci/.ssh/id_rsa

ssh -vT git@github.comもう一度実行すると、次のようになります。

...
debug1: Trying private key: /c/Users/Yuci/.ssh/id_rsa
debug1: Authentication succeeded (publickey).
...
Hi <my username>! You've successfully authenticated, but GitHub does not provide shell access.
...

そして今、私はユーザー名とパスワードを求められることなくGitHubにプッシュすることができます:-)


5

HTTPSではなく、SSHバージョンを使用する必要があります。リポジトリからクローンを作成する場合は、SSHバージョンを使用してリンクをコピーします。SSHは使いやすく、アクセスに関するすべての問題を解決するためです。アカウントに入力するすべてのSSHのアクセスを設定できます(プッシュ、プル、クローンなど)。

SSHが必要な理由とその使用方法が記載されたリンクは次のとおりです。

GitがSSHキーを生成する


0

通常どおり、SSHキーを作成し、公開キーをGitHubに貼り付けます。秘密鍵をssh-agentに追加します。(私はこれがあなたがしたことだと思います。)

すべてが正しいことを確認するには、 ssh -T git@github.com

次に、リモートポイントを次のように変更することを忘れないでください。

git remote set-url origin git@github.com:username/your-repository.git

-4

コマンドラインを使用:

Enter ls -al ~/.sshキーを押して、既存のSSHキーが存在するかどうかを確認します。

ターミナルではショーです:ディレクトリが存在しません

次に、新しいSSHキーを生成します

ステップ1。

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

ステップ2。

Enter a file in which to save the key (/Users/you/.ssh/id_rsa): <here is file name and enter the key>

ステップ3。

Enter passphrase (empty for no passphrase): [Type a password]

Enter same passphrase again: [Type password again]

申し訳ありませんが、この質問はキーの作成方法ではなく、認証の代わりにキーを使用するようにgitを設定することについてです
Sebus
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.