2
  • ssh-agent、ssh-add はすべて、PowerShell/Posh-Git を実行している Cmder で動作します

  • C:\Program Files\Git\usr\bin環境変数を追加しました

  • ssh-keyenGit Bash で正常に動作し、

  • ssh-keygen をPowershell/Posh-Gitでも動作させるにはどうすればよいですか?

編集:

ssh-keygen.batエラーは、PowerShell の ssh-keygen が代わりにファイルを実行していることが原因であることが判明しました。ssh-keygen.exe

したがって、以下で説明するようにエイリアスを設定するのが方法です。

$profile を時々リセットする必要があるため、Set-Alias代わりに使用しますが、これは奇妙です。New-AliasNew-Alias

リセットするには、次のように入力します. $profile

4

3 に答える 3

5

これを行う 1 つの方法は、それをパスに追加することです。

残念ながら、実行可能ファイルのみを追加する方法はないようです。binつまり、フォルダー全体 (つまりC:\Program Files\Git\usr\bin) をパスに追加する必要があります。

ディレクトリ全体をパスに追加する方法をお見せできますが、これはあなたが望むものではないと思います。代わりに、実行可能ファイルを追加するだけの代替方法を以下に示しssh-keygen.exeます。

  1. に移動し$env:homepath\Documents\WindowsPowerShellます (ない場合は作成します)。
  2. というファイルを作成しますprofile.ps1
  3. 次のコード行をファイルに追加します。
    New-Alias Ssh-Keygen "C:\Program Files\Git\usr\bin\ssh-keygen.exe"

これで、Powershell を起動するたびSsh-Keygenに利用できるようになります。タブ補完でも機能します(たとえば、タイプssh-してタブを押すと、自動的に になりますSsh-Keygen)。

于 2015-09-04T21:31:01.050 に答える
1

実際には、単一の実行可能ファイルを git bin フォルダーからパスに追加するには、それらをパス変数に含まれるフォルダーにシンボリック リンクします。
また、powershell 内でいくつかの git ツールを使用したかったのですが、ツールの 1 つを使用するたびに git-bin-folder をパスにロードしたくありませんでしたcpfindなどls...

  • パスに追加できるフォルダーを作成します。私は自分のものを作成C:\dev\binし、パス変数に追加しました。
  • 次に、すべての dll ファイルを git bin フォルダーから新しい bin フォルダーにシンボリック リンクする必要があります。これは、リンクするツールが同じディレクトリにある必要があるためです (実行パスは git-bin-dir ではなく、新しい bin -dir)。そのためのスクリプトを以下に追加します。
  • 最後に、PowerShell で使用するすべてのツールのシンボリック リンクを作成する必要があります (ヒント: ssh.exe は PowerShell で使用するのに非常に適しています ;))

以下は、git のすべての優れたツールを使用して新しい bin フォルダーをセットアップするのに役立つ、私の powershell 関数です。

# generic symlink function
function Create-Symlink {
    param(
        [string]$link,
        [string]$target
    )

    & cmd.exe /c mklink "$link" "$target"
}

# symlink all teh git dlls
function Create-GitDllSymlinks {
    param(
        [string]$newBinDir='C:\dev\bin',
        [string]$gitBinDir='C:\Program Files (x86)\Git\bin'
    )

    $dlls = gci $gitBinDir -Filter *.dll

    $dlls | foreach {
        Create-Symlink -link (join-path $newBinDir $_.Name) -target $_.FullName
    }
}

# to easily link your git tools
function Create-GitSymlink {
    param(
        [string]$executable,
        [string]$newBinDir='C:\dev\bin',
        [string]$gitBinDir='C:\Program Files (x86)\Git\bin'
    )

    if (-not $executable.EndsWith('.exe')) {
        $executable = ($executable + '.exe')
    }

    Create-Symlink -link (join-path $newBinDir $executable) -target (join-path $gitBinDir $executable)
}

# create all dll symlinks needed
Create-GitDllSymlinks
# link ssh and ssh-keygen to use in powershell
Create-GitSymlink -executable ssh-keygen
Create-GitSymlink -executable ssh

もう1つの良いことはこれです:

  • 新しい bin-folder に bash.bat ファイルを作成します
  • これをその .bat ファイルに書き込みます。

    "C:\Program Files (x86)\Git\bin\sh.exe" --login -i

  • powershell と bash をすばやく切り替えます。

    • PowerShell では、タイプbashと git-bash が同じウィンドウ内で開始され、git-bin-folder 内のすべての git ツールにアクセスできます。
    • PowerShellに戻りたいですか?exit と入力するだけです。

編集:
数日前に (Win 10 で) コンピューターを再インストールしたところ、上記のソリューションでいくつかの問題が発生しました。どうやら、git および/または git の cygwin 環境が更新され、cygwin アプリケーションが unix-environment-paths を別の方法で検索するようになりました。

たとえば、ssh常にホーム パスが見つからないと言われました。

Could not create directory '/home/myuser/.ssh'.
The authenticity of host 'hostx (IP)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxx.
Are you sure you want to continue connecting (yes/no)?

を使用すると、とprocmonでファイルを探していることがわかりました。HOME や USERPROFILE などの環境変数を設定してもうまくいかなかったので、cygwin ツールを満たすために 2 つの追加のシンボリック リンクを作成しました。c:\etcc:\home\myuser

PS bin # cmd /c mklink /D C:\etc "C:\Program Files\Git\etc"
symbolic link created for C:\etc <<===>> C:\Program Files\Git\etc
PS bin # cmd /c mklink /D C:\home "C:\Users"
symbolic link created for C:\home <<===>> C:\Users
于 2015-09-06T05:04:15.103 に答える