sta*_*key 253
对于Windows用户,只需注意这是我设置Git Bash环境以便在启动时登录一次的方式.我编辑〜/ .bashrc:
eval `ssh-agent`
ssh-add
Run Code Online (Sandbox Code Playgroud)
所以当我启动Git Bash时,它看起来像:
Welcome to Git (version 1.7.8-preview20111206)
(etc)
Agent pid 3376
Enter passphrase for /c/Users/starmonkey/.ssh/id_dsa:
Identity added: /c/Users/starmonkey/.ssh/id_dsa (/c/Users/starmonkey/.ssh/id_dsa)
Run Code Online (Sandbox Code Playgroud)
现在我可以ssh到其他服务器而无需每次都登录.
我知道这是一个老问题,但我今天从谷歌搜索来到这里,所以我希望这对其他人有帮助.
Ste*_*ung 60
这个答案解释了如何永久存储GitHub用户名和密码,而不是SSH密钥密码.
在Windows中,只需运行
__CODE__
这意味着下次推送时,您将像往常一样输入用户名和密码,但它们将保存在Windows凭证中.之后你不必再输入它们了.
如 http://www.tilcode.com/push-github-without-entering-username-password-windows-git-bash/
打开新终端时,我不想输入我的ssh密码; 不幸的是,starmonkey的解决方案需要在每个会话中输入密码.相反,我在我的.bash_profile
:
# Note: ~/.ssh/environment should not be used, as it
# already has a different purpose in SSH.
env=~/.ssh/agent.env
# Note: Don't bother checking SSH_AGENT_PID. It's not used
# by SSH itself, and it might even be incorrect
# (for example, when using agent-forwarding over SSH).
agent_is_running() {
if [ "$SSH_AUTH_SOCK" ]; then
# ssh-add returns:
# 0 = agent running, has keys
# 1 = agent running, no keys
# 2 = agent not running
ssh-add -l >/dev/null 2>&1 || [ $? -eq 1 ]
else
false
fi
}
agent_has_keys() {
ssh-add -l >/dev/null 2>&1
}
agent_load_env() {
. "$env" >/dev/null
}
agent_start() {
(umask 077; ssh-agent >"$env")
. "$env" >/dev/null
}
if ! agent_is_running; then
agent_load_env
fi
# If your keys are not stored in ~/.ssh/id_rsa or ~/.ssh/id_dsa, you'll need
# to paste the proper path after ssh-add
if ! agent_is_running; then
agent_start
ssh-add
elif ! agent_has_keys; then
ssh-add
fi
unset env
Run Code Online (Sandbox Code Playgroud)
这将记住我的新终端会话的密码; 当我在启动后打开第一个终端时,我只需要输入一次.
我想相信我得到的地方,这是对其他人工作的修改,但我不记得它来自哪里.谢谢匿名作者!
更新07/01/2019:我不认为这一切都是必要的.我现在一直通过确保.bash_profile
运行ssh-agent来完成这项工作:
eval $(ssh-agent)
Run Code Online (Sandbox Code Playgroud)
然后我像这样设置一个ssh配置文件:
touch ~/.ssh/config
chmod 600 ~/.ssh/config
echo 'AddKeysToAgent yes' >> ~/.ssh/config
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
如果我正确理解了这个问题,那么您已经在构建服务中使用了授权的 SSH 密钥,但是您想避免为每个克隆键入密码?
我可以想到两种方法来做到这一点:
如果您的构建服务以交互方式启动:在您启动构建服务之前,ssh-agent
以足够长的超时(-t
选项)启动。然后ssh-add
在开始构建服务之前使用(msysGit 应该有这些)添加您需要的所有私钥。您仍然需要输入所有密码,但每次服务启动只需输入一次。
如果您想完全避免输入密码,您可以随时从 SSH 密钥中删除密码,如https://serverfault.com/questions/50775/how-do-i-change-my- 中所述private-key-passphrase,通过设置一个空的新密码。这应该完全消除密码提示,但它比前一个选项更不安全。
bed*_*uin -1
您需要在要连接到存储库服务器的用户的文件夹authorized_keys
下创建该文件。.ssh
例如,假设您使用用户名buildservice
,则repo.server
可以运行:
cd ~buidservice
mkdir ./ssh
cat id_rsa.pub >> .ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)
然后你必须检查以下几件事:
相应的id_rsa
私钥出现在 中builservice@build.server:~/.shh/id_rsa
。
repo.server 的指纹存储在buildservice@build.server:~/.ssh/known_hosts
文件中。通常,这将在第一次尝试ssh
连接到repo.server
.