Answers:
您需要使用ssh代理。简短答案:尝试
$ ssh-add
在推之前。询问时提供您的密码。
如果您尚未运行ssh代理,则会收到以下消息:
Could not open a connection to your authentication agent.
在这种情况下,您可以启动一个并由此设置环境
eval $(ssh-agent)
然后重复该ssh-add
命令。
值得一看ssh代理手册页。
eval
进行谴责。
ssh-add /path/to/key
我使用钥匙串来管理ssh密钥。它也可以在Debian和Ubuntu中使用
apt-get install keychain
这是Debian钥匙串软件包页面。如您所见,该项目不是很活跃,但是对我有用。我也在这里的另一个答案中对此发表了评论
创建(或编辑,如果存在)以下〜/ .ssh / config文件:
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
IgnoreUnknown AddKeysToAgent,UseKeychain
上面添加UseKeychain yes
。
UseKeychain
选项似乎是在OpenSSH 7.1p2(2016-02-28)中添加的。也许您有以前的版本。 openssh.com/txt/release-7.2
为了方便起见,最佳方法是jmtd和Faheem的答案的组合。
ssh-agent
单独使用意味着ssh-agent
需要为您打开的每个新终端创建一个新的实例。keychain
初始化后,将要求输入私钥的密码并将其存储。这样,您的私钥就受到密码保护,但是您不必一遍又一遍地输入密码。
该拱维基建议初始化从钥匙圈/etc/profile.d/
或您的壳轮廓,如.bash_profile
或.bashrc
。这样做的缺点是,一旦打开终端,它就会初始化您的钥匙串。
一种更灵活的方法是keychain
与特定tmux
会话结合。因此,在.bash_profile
:
tsess=$(tmux ls 2>&1)
if [[ "${tsess%%:*}" = "secured" ]] &&
[[ -f $HOME/.keychain/$HOSTNAME-sh ]]; then
# start keychain
/usr/bin/keychain -Q -q --nogui ~/.ssh/id_rsa
. $HOME/.keychain/$HOSTNAME-sh
fi
...然后只是tmux
在需要时(从密钥绑定启动)启动安全会话的情况:
#!/bin/bash
PID=$(pgrep tmux)
new="tmux -f $HOME/.tmux/conf new -s secured"
old="tmux attach -t secured -d"
if [[ -z "$SSH_AUTH_SOCK" ]]; then
eval `ssh-agent`
trap "kill $SSH_AGENT_PID" 0
fi
if [[ -z "$PID" ]]; then
urxvtc -title "SSH" -e sh -c "${new}"
else
urxvtc -title "SSH" -e sh -c "${old}"
fi
ssh-add
现在,当您启动该特定tmux
会话时,您的钥匙串将仅初始化一次。只要该会话持续存在,您就可以访问这些ssh
密钥并将其推送到远程存储库。
.profile
-这样一来,您将在登录后立即提示输入密钥。
eval
可能你只需要输入ssh-agent
?