zch*_*mes 133 windows ssh git-bash
我正在使用git bash.我必须使用
eval `ssh-agent.exe`
ssh-add /my/ssh/location/
Run Code Online (Sandbox Code Playgroud)
每当我开始新的git bash时.
有没有办法永久设置ssh代理?或者Windows有一个很好的方法来管理ssh密钥?
我是新手,请给我详细的教程,谢谢!
Von*_*onC 122
在一个Git bash命令,你可以添加一个脚本~/.profile或~/.bashrc(与~被通常设置为%USERPROFILE%),为了表示会话自动启动ssh-agent.如果该文件不存在,只需创建它.
这就是GitHub在" 使用SSH密钥密码 "中所描述的内容.
该文章的" 在Git for Windows上自动启动ssh-agent "部分有一个强大的脚本,用于检查代理是否正在运行.以下只是一个片段,请参阅GitHub文章了解完整解决方案.
# This is just a snippet. See the article above.
if ! agent_is_running; then
agent_start
ssh-add
elif ! agent_has_keys; then
ssh-add
fi
Run Code Online (Sandbox Code Playgroud)
其他资源:
" 让ssh-agent与windows命令shell中的git一起运行 "有一个类似的脚本,但我主要参考上面的GitHub文章,它更加强大和最新.
Jig*_*hel 25
PS:这些说明是在Windows 10 Linux子系统中打开的Bash shell的上下文中,没有提到在Windows上使用Bash在Windows上生成的SSH密钥的sym链接在Windows上的Ubuntu
1)通过在其中添加以下内容来更新.bashrc
# Set up ssh-agent
SSH_ENV="$HOME/.ssh/environment"
function start_agent {
echo "Initializing new SSH agent..."
touch $SSH_ENV
chmod 600 "${SSH_ENV}"
/usr/bin/ssh-agent | sed 's/^echo/#echo/' >> "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
/usr/bin/ssh-add
}
# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" > /dev/null
kill -0 $SSH_AGENT_PID 2>/dev/null || {
start_agent
}
else
start_agent
fi
Run Code Online (Sandbox Code Playgroud)
2)然后运行$ source ~/.bashrc以重新加载您的配置.
以上步骤取自https://github.com/abergs/ubuntuonwindows#2-start-an-bash-ssh-agent-on-launch
3)创建SSH配置文件(如果不存在).使用以下命令创建新的命令:.ssh$ touch config
4)添加以下内容 ~/.ssh/config
Host github.com-<YOUR_GITHUB_USERNAME>
HostName github.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_work_gmail # path to your private key
AddKeysToAgent yes
Host csexperimental.abc.com
IdentityFile ~/.ssh/id_work_gmail # path to your private key
AddKeysToAgent yes
<More hosts and github configs can be added in similar manner mentioned above>
Run Code Online (Sandbox Code Playgroud)
5)使用命令将密钥添加到SSH代理$ ssh-add ~/.ssh/id_work_gmail,然后您应该能够使用ssh连接到您的github帐户或远程主机.例如,在上面的代码示例的上下文中:
$ ssh github.com-<YOUR_GITHUB_USERNAME>
Run Code Online (Sandbox Code Playgroud)
要么
$ ssh <USER>@csexperimental.abc.com
Run Code Online (Sandbox Code Playgroud)
应该只需要一次性执行向SSH代理添加密钥.
6)现在在Windows Linux子系统上注销您的Bash会话,即再次退出所有Bash控制台并再次启动新控制台并尝试通过SSH配置文件中配置的SSH连接到您的Github主机或其他主机,它应该无需任何额外工作脚步.
注意:
如果您面对,Bad owner or permissions on ~/.ssh/config则使用该命令更新权限chmod 600 ~/.ssh/config.参考:https://serverfault.com/a/253314/98910
要使上述步骤正常工作,您需要OpenSSH v 7.2及更高版本.如果您的旧版本可以使用/sf/answers/2908877541/中提到的步骤进行升级
可以在gist Windows 10 Linux子系统SSH代理问题中找到相同的详细信息
谢谢.
Tia*_*ica 15
如果目标是能够随时推送到 GitHub 存储库,那么在C:\Users\tiago\.ssh存储密钥的 Windows 中(至少在我的情况下),创建一个名为 config 的文件并在其中添加以下内容
Host github.com
HostName github.com
User your_user_name
IdentityFile ~/.ssh/your_file_name
Run Code Online (Sandbox Code Playgroud)
然后只需打开 Git Bash,您就可以进行推送,而无需手动启动 ssh 代理并添加密钥。
小智 6
我无法根据最佳答案让这个工作,可能是因为我是一个电脑菜鸟并且错过了一些明显的东西。但仅供参考,以防万一它可以帮助像我一样面临挑战的人,最终起作用的是通过此处的链接之一(在答案中引用)。这只需将以下内容粘贴到我的.bash_profile:
env=~/.ssh/agent.env
agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }
agent_start () {
(umask 077; ssh-agent >| "$env")
. "$env" >| /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
ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
ssh-add
fi
unset env
Run Code Online (Sandbox Code Playgroud)
我可能配置了一些奇怪的东西,但当我将其添加到我的.profile或.bashrc. 我遇到的另一个真正的挑战是我不是这台计算机的管理员,并且在未经 IT 批准的情况下无法更改环境变量,因此这是针对无法访问该计算机的用户的解决方案。
当您打开 git bash 时,如果系统提示您输入 ssh 密码,您就知道它正在工作。哈利路亚,事情终于奏效了。
小智 5
我发现实现这一目标最顺畅的方法是使用Pageant作为SSH代理和plink.
您需要为远程使用的主机名配置putty会话.
您还需要plink.exe,它可以从与putty相同的站点下载.
并且你需要在加载密钥的情况下运行Pageant.我在我的启动文件夹中有一个快捷方式,可以在我登录时加载我的SSH密钥.
当您安装git-scm时,您可以指定它使用tortoise/plink而不是OpenSSH.
实际效果是你可以随时打开git-bash并推/拉而不会受到密码短语的挑战.
当pageant加载了您的密钥时,putty和WinSCP会话也是如此.它让生活变得更加轻松(安全).
| 归档时间: |
|
| 查看次数: |
134771 次 |
| 最近记录: |