ssh-agent,ssh-add所有适用于运行PowerShell / Posh-Git的Cmder
我添加了C:\Program Files\Git\usr\bin
环境变量
ssh-keyen
适用于Git Bash,
如何让ssh-keygen与 Powershell / Posh-Git一起使用?
修改
事实证明,错误是由于PowerShell中的ssh-keygen正在运行ssh-keygen.bat
文件而不是ssh-keygen.exe
因此,如下所述设置别名是要走的路。
我使用Set-Alias
代替New-Alias
,因为New-Alias
要求我不时地重置我的$个人资料,这很奇怪。
要重置,请输入. $profile
答案 0 :(得分:4)
执行此操作的一种方法是将其添加到您的路径中。
很遗憾,似乎无法添加仅可执行文件。换句话说,您需要将整个bin
文件夹(即C:\Program Files\Git\usr\bin
)添加到您的路径中。
我可以向您展示如何将整个目录添加到路径中,但我不认为这是您想要的。相反,以下是仅添加ssh-keygen.exe
可执行文件的替代方法。
$env:homepath\Documents\WindowsPowerShell
(如果您没有,请创建它)。profile.ps1
。New-Alias Ssh-Keygen "C:\Program Files\Git\usr\bin\ssh-keygen.exe"
现在,每次启动Powershell时,Ssh-Keygen
都可用。它甚至可以与标签完成一起使用(例如,键入ssh-
并按Tab键,然后它会自动变为Ssh-Keygen
)。
答案 1 :(得分:1)
实际上,您可以将git bin文件夹中的单个可执行文件添加到路径,方法是将它们符号链接到路径变量中包含的文件夹中。
我也想在powershell中使用一些git工具,但是每次我想使用其中一个工具时我都不想将git-bin-folder加载到路径中,我也不想覆盖cp
,find
,ls
等工具......
C:\dev\bin
中创建了我的并将其添加到路径变量中。 以下是我的powershell函数,它们可以帮助您使用git中的所有优秀工具设置新的bin文件夹:
# 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
另一件好事是:
将此内容写入.bat文件:
"C:\Program Files (x86)\Git\bin\sh.exe" --login -i
在powershell和bash之间快速切换:
bash
,git-bash将在同一窗口内启动,可访问git-bin-folder中的所有git工具。 修改强>
我几天前(使用Win 10)重新安装了我的计算机,并在上面的解决方案中遇到了一些问题。显然,git中的git和/或cygwin环境已经更新,cygwin应用程序现在以不同的方式搜索它们的unix-environment-path。
例如,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
我发现,它正在寻找c:\etc
和c:\home\myuser
中的文件。设置HOME或USERPROFILE等环境变量是行不通的,所以我只做了两个符号链接来满足我的cygwin工具:
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
答案 2 :(得分:0)
我通过使用命令生成自己的ssh密钥对解决了该问题
$ ssh-keygen -t rsa -C“ your_email@mail.com”
在Powershell中。如果您已经拥有SSH密钥,则不要生成新密钥,因为它们将被覆盖。仅当已将Git与Git Bash一起安装时,才能使用ssh-keygen命令。
运行上述命令时,它将在〜/ .ssh目录中创建2个文件。
〜/ .ssh / id_rsa-它是私钥或标识密钥。
〜/ .ssh / id_rsa.pub-公钥
查看链接generate ssh key