2016-08-01 5 views
1

別のディレクトリに公開されている公開リポジトリをクローンしたいとします。コマンドラインからこれを行うために私が入力します。作品コマンドラインからクローンを作成できますが、bashスクリプトでは複製できません。

git clone [email protected]:computersarecool/dotfiles.git documents/gitprojects/dotfiles

を。

しかし、今はbashスクリプトからやりたいと思います。このスクリプトでは、私は文字通り、まったく同じコードがあります。

#!/bin/bash 
git clone [email protected]:computersarecool/dotfiles.git documents/gitprojects/dotfiles 

を今私はエラーを取得する:

Permission denied (publickey).            
fatal: Could not read from remote repository. 
Please make sure you have the correct access rights and the repository exists. 

誰も私に問題を説明できますか?レポが公開されているにもかかわらず、なぜ最初に公開鍵を求めているのか理解できません。

+0

あなたは 'sudo'でこれをやっているのですか、あるいは別のユーザであるのか、' cron'やsomesuchと同じですか? –

+0

私は 'sudo'としてbashスクリプトを実行しています!これを説明する方法はありますか? – Startec

+0

'git clone [email protected]:...'はSSH経由で接続しています。**リモートのSSHデーモンを認証する必要があります** ** git特有のものと話すことができるので、リポジトリが認証されているかどうかは完全に無関係です:その時点でトランスポート層のネゴシエーションと認証は完了していませんそれが失敗すると、アプリケーション層のアクセス制御があるかどうかは疑問です。 –

答えて

1

それは確かに公共のオープンレポある場合は、代わりにsshのhttpsを使用:

#!/bin/bash 
git clone https://github.com/computersarecool/dotfiles.git documents/gitprojects/dotfiles 

あなたはSSHに固執する場合は、ssh-agentのは、あなたのid_rsaとキーを知らせる必要があります。

#!/bin/bash 
eval `ssh-agent -s` 
ssh-add /home/<Your username>/.ssh/id_rsa 
git clone [email protected]:computersarecool/dotfiles.git documents/gitprojects/dotfiles 

ユーザー名を追加します(そして、あなたの秘密鍵がid_rsaと命名されていることを確認するための〜/ .sshディレクトリの内容を確認してください)

+1

あなたはまだ2番目のスニペットで 'https://'を使用していますので、SSHキーを設定するよりもむしろ意味があります。ありがとうございます@charlesDuffy! –

+0

!固定 – sestus

0

あなたはsudoのようbashスクリプトを実行することをあなたのコメントに言及。

私はあなたがsudoなしでコマンドラインでクローンしたと推測します。

エラーメッセージPermission denied (publickey).は、基本的には、クローンを作成しようとしているユーザーに正しいssh公開鍵がないことを示しています。これは、UNIXシステム上のすべてのユーザは通常、独自のssh公開鍵を持っているからです。おそらくあなたのユーザは、あなたの公開鍵を使ってgithubで認証するように設定されているでしょう。しかし、sudoはユーザrootとして実行されます。 rootの公開鍵をgithubアカウント(rootのgithubアカウントまたは自分のgithubアカウント)で使用するように設定していない場合は、認証に失敗します。

  1. は、rootの.sshディレクトリに公開鍵をコピーします。

    は、基本的には、このための2つのソリューションを持っています。これはお勧めできません!しかし、あなた自身のラップトップのような単一のユーザマシンでは、これを行うセキュリティ上のリスクはごくわずかです。

  2. rootの公開鍵を作成し、githubで登録します。

代わりに(それはあなたのパスワードたびにキー入力する必要がなりますようしかし、痛みになりプッシュ)にsshの代わりにHTTPSを使用してクローンを作成。

さらに別の選択肢は、自分自身と同じで、ルートではないクローンです。

+0

あなたは 'public key'をここに言及しますが、私はrootユーザーが公開鍵と秘密鍵を必要とすると仮定していますか? – Startec

+0

はい、キーペアの仕組みです。しかし、秘密鍵を誰にも公開しないでください。 – slebetman

+0

... "re:" pushing a pain " - 同じURLを使ってプッシュする必要はありません。 –

関連する問題