Linuxでgitクライアントをセットアップしようとしています。秘密鍵をマシンにアップロードしました。~/.ssh に入れる必要があることは理解していますが、そのフォルダーへのアクセス権がありません。
秘密鍵を別の場所で探すように git に指示するにはどうすればよいですか?
Linuxでgitクライアントをセットアップしようとしています。秘密鍵をマシンにアップロードしました。~/.ssh に入れる必要があることは理解していますが、そのフォルダーへのアクセス権がありません。
秘密鍵を別の場所で探すように git に指示するにはどうすればよいですか?
これは、 ssh 構成ファイルを使用して実現できます。
~/.ssh
最初に、という名前のフォルダー内にファイルを作成します。config
次のようなコマンドを使用できます
$ nano ~/.ssh/config
次に、ファイルのコンテンツには、各ホスト名に基づいたキーの場所が含まれている必要があります。例えば:
Host github.com
IdentityFile ~/myPublicKeyFolder/myGitHubFile
Host heroku.com
IdentityFile ~/myPublicKeyFolder/myHerokuFile
そのため、git が各ホストにアクセスしようとすると、到達しようとしている git ホストに基づいて、この構成ファイル内のルールに従います。
1つのオプションはssh-agent
、ファイル名を使用してに提供することですssh-add
。
例えば:
$ ssh-agent /bin/bash
$ ssh-add ~/mykeys/id_rsa
ファイル名を に入れる~/.ssh/config
と言いましたが、このファイルにもアクセスできない可能性があります。
ssh
オプションで使用する秘密鍵を指定でき-i keyfile
ます。
ssh に渡すオプションを git と言う方法は?
GitTipsページGIT_SSH
には、ラッパー スクリプトを作成し、環境変数でそれを指すように記載されています。
git 構成も使用できるようですがcore.gitProxy
、良い例が見つかりませんでした。一部のメーリング リスト メッセージgit:
では、プロトコル専用であることが示唆されています。
ssh エージェントを使用する
ssh-agent bash -c 'ssh-add /home/me/my_private_key; git clone git@bitbucket.org:uname/test-git-repo.git'
私が取り組んでいるプロジェクトでは、アプリですべての git コマンドを使用してシェル スクリプトを吐き出し、外部リポジトリに初期化/コミット/プッシュする必要があります。~/.ssh/config は立ち入り禁止なので、アプリ ディレクトリに公開鍵と秘密鍵があります。vhallacの回答を使用しました。これは、キーを使用するためにシェル スクリプトで行う必要があったことです。
eval `/usr/bin/ssh-agent`
ssh-add /path/to/.ssh/id_rsa
これが誰かを助けることを願っています