My Node.JSプロジェクトにはgithubでホストされているプライベートNPMリポジトリへの参照が含まれています。これはローカルでうまく動作しますが、私はこれをElastic Beanstalkで動作させるのに苦労しています。Elastic BeanstalkでのgithubプライベートレポアクセスのためのSSHキーの設定
dependencies: {
...
"express": "^4.12.4",
"jsonwebtoken": "^5.0.5",
"my-private-module": "[email protected]:<my-user>/<my-repo>.git#<my-version>",
...
}
-
私は必要なもの、ソースコントロールに秘密鍵などを格納することなく、私のElastic Beanstalkでインスタンス上のgitの作業SSHの構成を設定することができることです。
明らかに、EBインスタンスは私のプライベートgithub reposにアクセスするために必要なSSH鍵を持っていません。 username:[email protected]
でHTTPSスタイルのgit URLを使用するとうまくいきます。 githubが提供するoauth token method(本質的にはuser:passです)を使っても動作します。しかし、私はソース管理にチェックインするための資格情報を必要としないので、私はgithubから私のEBインスタンスでSSH経由で動作するようにクローンを作成しようとしています。
私はnpm preinstall
ツリーが構築された後、変更作られたプリインストールを実行するためのNPM2まで働いていたthis blog postによると、スクリプト、およびその問題がまだ保留されている修正するためのPRを含め、百万個の方法を試してみました。
私はENV変数ではないため、それ自体では、環境変数(トリッキーから来るトークンのOAuthとHTTPSのURLに[email protected]にinsteadof
を配置するgit config
を呼び出そうと.ebextensions
コマンドの設定を試してみました起動時にこの時点で設定され、$ HOMEがないとgitの設定は混乱します)。
this solution from the comments on the mentioned blog postを含む.ebextensions
を使用して、私のEBインスタンスにSSHを設定するさまざまな方法を試みました。これは基本的に私が今こだわっている場所です。
- 私は成功した鍵ペアを作成している、私のgithubのプロファイルにそれを設定し、
- 私のレポのクローンを作成するために、私のローカルクライアントからの秘密鍵が使用可能であることを確認し、私は自分の秘密鍵とsshを入れていますプライベートS3バケット
- 上の設定ファイルIはthis example
- に応じてIで/ tmpを/一覧表示デバッグ
commands
.ebextensions
コンフィギュレーションを作成しました/tmp/.ssh/
に私のS3バケットからコピーし、これらの2つのファイルを、.ebextensions
files
コンフィギュレーションを作成しました.ssh a
/tmp/.ssh/configは含まれています:
Host github.com
IdentityFile /tmp/.ssh/deploy_key
IdentitiesOnly yes
UserKnownHostsFile=/dev/null
StrictHostKeyChecking no
/tmp/.ssh/deploy_keyはローカルで動作することが確認された私の秘密鍵が含まれているファイルが正常にS3からダウンロードされたことを示していND 。
しかし、gitがまだエラーがスローされます:
npm ERR! Command failed: git clone --template=/tmp/.npm/_git-remotes/_templates --mirror ssh://[email protected]/[.....]
npm ERR! Cloning into bare repository '/tmp/.npm/_git-remotes/git-ssh-git-github-com-[...]
npm ERR! Host key verification failed.
npm ERR! fatal: Could not read from remote repository.
npm ERR!
npm ERR! Please make sure you have the correct access rights
npm ERR! and the repository exists.
私は今アイデアが不足しています。私の最高の推測は/tmp/.sshがgitがssh設定ファイルを探すためのパスではないということです。リンクされたソリューションが提案されたが、後のAMI:sなどで変更されたかもしれません。EBの開始時に使用される環境は少し制限されているようです。コマンドはユーザーnodejs
として実行されますが、$ HOMEがどこにも設定されていない場合でも、/ tmpはホームディレクトリとして使用されているようです。
どうすれば私のSSH設定を取得し、結果的に私のSSHキーを使うことができますか?どのようにしてgitがSSH設定ファイルを探すのか調べるには?通常は〜/ .sshに入っていますが、$ HOMEは設定されていないので、これは簡単ですが簡単ですがナットを運転しています。