Ion*_*zău 153 ssh git passphrase
当我在git clone git@...
每台计算机上运行一次(使用 ssh)重新启动时,会出现一个窗口对话框,其中包含一个用于插入我的 SSH 密码的文本框,并按 OK 确认。然后在我的系统下次启动之前不再需要密码短语。
升级到 Ubuntu 13.10 后,该窗口不再出现,但终端中会出现一条消息:
Enter passphrase for key '/home/username/.ssh/id_rsa':
Run Code Online (Sandbox Code Playgroud)
...每次克隆 git 存储库时都会出现这种情况。
我怎样才能解决这个问题?我只想输入我的密码一次。
Ion*_*zău 153
更新:似乎是 13.10 的错误:
https://bugs.launchpad.net/ubuntu/+source/libpam-ssh/+bug/1247169
无论如何运行以下命令,问题已为我解决:
我通过输入以下命令解决了这个问题:
$ ssh-agent bash
Run Code Online (Sandbox Code Playgroud)
这将创建一个新的 bash 进程,允许您添加私钥。添加新的私钥时,系统会提示您输入密码一次且仅此一次。
进而:
$ ssh-add /home/username/.ssh/id_rsa
Enter passphrase for /home/username/.ssh/id_rsa:
Identity added: /home/username/.ssh/id_rsa (/home/username/.ssh/id_rsa)
Run Code Online (Sandbox Code Playgroud)
...username
你的用户名在哪里。您可以使用$USER
变量执行相同的操作:
$ ssh-add /home/$USER/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)
或者,仅~
用于您的主目录。
$ ssh-add ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)
问题得到了解决。
tob*_*ora 80
使用AddKeysToAgent并.ssh/config
在开头添加以下内容:
AddKeysToAgent yes
Run Code Online (Sandbox Code Playgroud)
并运行 git/ssh/... 如果还不够,请检查您的 ssh 版本并检查 ssh-agent 是否加载了以下说明:
首先检查您的 ssh 版本,它必须大于等于 7.2:
ssh -V
Run Code Online (Sandbox Code Playgroud)
如果是这种情况,只需在.ssh/config
开头添加一行:
AddKeysToAgent yes
Run Code Online (Sandbox Code Playgroud)
其他选项是no
(默认值)、yes
、confirm
(可选地后跟时间间隔)ask
或时间间隔。
#3) 检查 ssh-agent 是否已经打开
通常发行版会自动加载 ssh-agent。要检查它,请运行
ps aux | grep -v grep | grep ssh-agent
Run Code Online (Sandbox Code Playgroud)
如果你没有看到任何包含它的行,你需要通过运行来加载它:
eval $(ssh-agent)
Run Code Online (Sandbox Code Playgroud)
请注意,这仅在当前终端上启用代理,因此要在任何地方启用它,您可以尝试在~/.profile
文件中添加这一行并重新启动。
Ard*_*rda 40
这个 Atlassian 文档(archive.org 备份)在 Ubuntu 14.04 服务器版上为我解决了这个问题:
只需将此值添加到您的.bashrc
文件中:
SSH_ENV=$HOME/.ssh/environment
# start the ssh-agent
function start_agent {
echo "Initializing new SSH agent..."
# spawn ssh-agent
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
echo succeeded
chmod 600 "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
/usr/bin/ssh-add
}
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" > /dev/null
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi
Run Code Online (Sandbox Code Playgroud)
登录后,它只要求输入一次密码并缓存。您不需要每次都输入它。
小智 21
此错误的解决方法是将以下内容添加到~/.bashrc
eval `gnome-keyring-daemon --start`
Run Code Online (Sandbox Code Playgroud)
我花了太长时间才让它在 WSL2 Ubuntu 20.04 上运行。最后,我们需要在生成新控制台时启动 ssh-agent,但不要加载密钥。首次使用时加载密钥并使用AddKeysToAgent
。
~/.bashrc
在or的末尾添加以下内容~/.zshrc
:
SSH_ENV="$HOME/.ssh/agent-environment"
function start_agent {
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
chmod 600 "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
}
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" > /dev/null
#ps ${SSH_AGENT_PID} doesn't work under cywgin
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi
Run Code Online (Sandbox Code Playgroud)
请注意,
/usr/bin/ssh-add;
与原始脚本相比,这里故意遗漏了。
并在文件末尾添加以下内容~/.ssh/config
:
Host *
AddKeysToAgent yes
Run Code Online (Sandbox Code Playgroud)