質問

フラッシュドライブにMSySgitポータブルを正常にインストールして構成し、それを使用してGitHubリポジトリをプルしてプッシュしました。しかし、私は常にSSHのサポートをKludgeしなければならないようです。

具体的には、SSHが私のキーファイルを見つけるためには、私は従わなければなりません これらの指示 の2番目のインスタンスを開始します ssh-agent その後 ssh-add git-bash.batを実行するたびに私のキー。

の出力を使用します ssh -v git@github.com デバッグするには、MSYSGITがデフォルトでWindowsユーザーディレクトリがキーを探すために表示されることがわかります。それはできません。ポータブルドライブの独自のディレクトリを見る必要があります。

$ Homeをプログラム独自のフォルダーに強制するにはどうすればよいですか?

壊れたVoxリンクの更新

からの指示 このページ 私が最初に投稿した今や壊れたリンクに似ています。以下に引用。また、ここにあります オリジナルVoxのウェブアーチヴィーティブ.

ただし、これを試して取得すると:

% ssh-add
Could not open a connection to your authentication agent. 

その後、セッションはSSH-Agentの下で実行されていません。エージェントの下で新しいシェルを再起動することで、これを回避できます。

exec ssh-agent bash 

Bashを選択したシェルに置き換えることができます。これを行うと、SSH-ADDを実行してそのシェルのキーをロードできるはずです。

役に立ちましたか?

解決

Git Bashの起動に使用されるコマンドは次のとおりです。

C:\Windows\SysWOW64\cmd.exe /c ""C:\Prog\Git\1.7.1\bin\sh.exe" --login -i"

DOSセッションで次のことを試しました。

C:\>C:\Windows\SysWOW64\cmd.exe /c ""C:\Prog\Git\1.7.1\bin\sh.exe" --login -i"
VonC@XXX /c/
$ echo $HOME
/c/Users/VonC

デフォルトでは、$ home $%homepath%ですが、%home%を強制する場合:

set HOME=/another/path

そして、同じバッシュセッションを起動します。

C:\>C:\Windows\SysWOW64\cmd.exe /c ""C:\Prog\Git\1.7.1\bin\sh.exe" --login -i"
VonC@XXX /c/
$ echo $HOME
/another/path

したがって、スクリプトでバッシュコールをラップした場合、家を次のように設定します。

  • %~dp0 :USBキーのラッパーのパス
  • また %~d1\your\path: : と %~d1 ドライブレターであること(ラッパーが載っている場合はUSBキーの)

, 、必要な価値を強制することができるはずです。


メモ(2011年11月):それ以来、 OP DGW 彼を書いた 自分のラッパー:

git-bash-portable.bat:

@echo off
rem Copyright (C): 2010 Voyagerfan5761
rem http://technobabbl.es/

set USERPROFILE=%~dp0
set HOMEDRIVE=%~d0
set HOMEPATH=%~p0
set HOME=%~dp0
set HISTFILE=%USERPROFILE%.bash_history
rem set BASHRC=%USERPROFILE%.bashrc

git-bash.bat

記事 "Windows用のポータブルGit:設定 $HOME 環境変数は、完全な移植性(GitHubで使用するSSLキーと構成を含む)を可能にします「有用な情報も追加します。

ただし、ポータブルドライブにgitをインストールする場合、設定をインストールで移動する必要があります。これは、他のコンピューターに存在しないフォルダーで探している場合は明らかにそうではありません。

したがって、私たちがする必要があるのは、ポータブルGitに、独自のフォルダー内の特定の場所をホームフォルダーとして扱うように指示することです。そうすれば、gitフォルダー全体を好きな場所にコピーでき、設定はそれと一緒に移動します。

他のヒント

ホームディレットを設定します

aでの解決策 git-bash-portable.bat ラッパーは、バックグラウンドにとどまる別のWindows CMDウィンドウを開きます。

もう1つのよりネイティブソリューションは、調整することです /etc/profile そして、そこに家のvarを設定します。次の行を最後に追加するだけです /etc/profile, myuser あなたの蜂の巣 バーチャル ユーザー名:

# end of /etc/profile
export HOME="/home/myuser"
cd

これにより、適切なホームディレクトリとCDSが設定されます。次に、すべてのファイルをからのロードするなど、スタートアップメカニズム /etc/profile.d 正しく機能し、開始します git-bash.exe doubleclickで。

もちろん、これが機能するにはホームディレクトリを作成する必要があります。 Git-Bashを開始して作成します。

mkdir -p /home/myuser

エージェントへの開始または再接続

エージェントに関しては、通常、開いたすべてのgitバッシュシェルで再ロードする必要があります。すべてのgitバッシュウィンドウにまたがる独立したエージェントを取得するためのソリューションは、次の小さなスクリプトを含めることです ~/.mgssh スタートアップで。エージェントenv varsをファイルに保存します agent.env の中に .ssh ディレクトリ。新しいシェルがファイルを読み取り、エージェントがまだ実行されているかどうかを確認し、それに接続します。それが実行されていない場合、それはエージェントを起動し、 agent.env ファイル。あなたを確認してください .ssh dirが存在します。

# cat ~/.mgssh

agentfile=~/.ssh/agent.env

agent_load_env()
{
  test -f "$agentfile" && . "$agentfile" >| /dev/null;
}

agent_start()
{
  (umask 077; ssh-agent >| "$agentfile")
  . "$agentfile" >| /dev/null;
}

agent_load_env

# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
    agent_start
fi

# uncomment this, if you want to add a key on agent startup
#if [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
#    ssh-add
#fi

unset agentfile

今、 .mgssh あなたのスクリプト .bashrc:

# cat .bashrc
. ~/.mgssh

# ... more .bashrc content

これをgithubで見つけました:

https://help.github.com/articles/working-with-ssh-key-passphrases/#platform-windows

スティックを除去する前にエージェントを殺します

通常、usbstickを削除する前に、windowsに尋ねます 排出します スティックは、エクスプローラーで右クリックするか、小さなsystrayアイコンを使用してクリックします。エージェントがまだ稼働している場合、これは機能しません。スティックの取り外し時に最後のシェルを閉じる前に、必ずエージェントを殺してください。

$ ssh-agent -k

unset SSH_AUTH_SOCK;
unset SSH_AGENT_PID;
echo Agent pid 8472 killed;

注:通常、使用します eval $(ssh-agent -k) Env varを解明することもできますが、シェルを閉じる直前にこれを行うと、それは無関係です。上記の起動スクリプト .mgssh のクリーンアップの世話をします ~/.ssh/agent.env ファイルを作成する必要もありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top