Когда я запускал git clone git@... (используя ssh) один раз за перезагрузку компьютера, появилось диалоговое окно с текстовым полем для ввода моей кодовой фразы SSH и подтверждено с помощью OK. Затем кодовая фраза больше не требовалась до следующего запуска моей системы.
После обновления до Ubuntu 13.10 это окно больше не появляется, но сообщение в терминале появляется:
Enter passphrase for key '/home/username/.ssh/id_rsa':
... каждый раз при клонировании git-репозитория это появляется.
Как я могу это исправить? Я хочу ввести кодовую фразу только один раз.
В любом случае, для меня были решены следующие проблемы:
Я исправил это, введя следующие команды:
$ ssh-agent bash
Это создает новый процесс 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)
... где username - ваше имя пользователя. Вы можете сделать то же самое с помощью переменной $USER:
$ ssh-add /home/$USER/.ssh/id_rsa
В качестве альтернативы просто используйте ~ для вашего домашнего каталога.
$ ssh-add ~/.ssh/id_rsa
И проблема была исправлена. [ ! d12]
В любом случае, для меня были решены следующие проблемы:
Я исправил это, введя следующие команды:
$ ssh-agent bash
Это создает новый процесс 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)
... где username - ваше имя пользователя. Вы можете сделать то же самое с помощью переменной $USER:
$ ssh-add /home/$USER/.ssh/id_rsa
В качестве альтернативы просто используйте ~ для вашего домашнего каталога.
$ ssh-add ~/.ssh/id_rsa
И проблема была исправлена. [ ! d12]
Обходной путь для этой ошибки заключается в том, чтобы добавить нижнюю часть ~/.bashrc
eval `gnome-keyring-daemon --start`
Пользователи этой оболочки могут использовать этот скрипт для выполнения того же самого действия.
# content has to be in .config/fish/config.fish
# if it does not exist, create the file
setenv SSH_ENV $HOME/.ssh/environment
function start_agent
echo "Initializing new SSH agent ..."
ssh-agent -c | sed 's/^echo/#echo/' > $SSH_ENV
echo "succeeded"
chmod 600 $SSH_ENV
. $SSH_ENV > /dev/null
ssh-add
end
function test_identities
ssh-add -l | grep "The agent has no identities" > /dev/null
if [ $status -eq 0 ]
ssh-add
if [ $status -eq 2 ]
start_agent
end
end
end
if [ -n "$SSH_AGENT_PID" ]
ps -ef | grep $SSH_AGENT_PID | grep ssh-agent > /dev/null
if [ $status -eq 0 ]
test_identities
end
else
if [ -f $SSH_ENV ]
. $SSH_ENV > /dev/null
end
ps -ef | grep $SSH_AGENT_PID | grep -v grep | grep ssh-agent > /dev/null
if [ $status -eq 0 ]
test_identities
else
start_agent
end
end
Я использую это:
vim ~/.profile
eval `/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh,gpg`
export SSH_AUTH_SOCK
export GPG_AGENT_INFO
Если вы используете файл azure .ppk
Просто преобразуйте его в pem и добавьте разрешение 400 с помощью простых шагов:
sudo apt-get install putty
puttygen <path_to_key>/keyname.ppk -O private-openssh -o <path>/aws_key.pem
sudo chmod 400 <path>/aws_key.pem
ssh -vi aws_key.pem ubuntu@<ip_address>
Этот документ в Atlassian исправил проблему для меня на Ubuntu 14.04 Server Edition:
Просто добавьте эти значения в ваш файл .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
И после входа в систему, он запрашивает пароль только один раз, и он кэширует. Вам не нужно вводить его каждый раз.
Добавьте в свою .ssh/config одну строку в начале:
AddKeysToAgent yes
и запустите git / ssh / ... Если этого недостаточно, проверьте свою версию ssh и убедитесь, что ssh-agent загружен этими инструкциями:
Сначала проверьте, что ваша версия ssh, она должна быть больше равной 7.2:
ssh -V
Если это так, просто добавьте в свою .ssh/config одну строку в начале:
AddKeysToAgent yes
Обычно дистрибутивы автоматически загружают ssh-agent. Чтобы проверить его, запустите
ps aux | grep -v grep | grep ssh-agent
Если вы не видите ни одной строки, содержащей его, вам нужно загрузить его, выполнив:
eval $(ssh-agent)
Обратите внимание, что это позволяет агенту только на текущем терминале, поэтому, чтобы включить его повсюду, вы можете попробовать добавить эту строку в свой файл ~/.profile и перезагрузиться.
Обходной путь для этой ошибки заключается в том, чтобы добавить нижнюю часть ~/.bashrc
eval `gnome-keyring-daemon --start`
Пользователи этой оболочки могут использовать этот скрипт для выполнения того же самого действия.
# content has to be in .config/fish/config.fish
# if it does not exist, create the file
setenv SSH_ENV $HOME/.ssh/environment
function start_agent
echo "Initializing new SSH agent ..."
ssh-agent -c | sed 's/^echo/#echo/' > $SSH_ENV
echo "succeeded"
chmod 600 $SSH_ENV
. $SSH_ENV > /dev/null
ssh-add
end
function test_identities
ssh-add -l | grep "The agent has no identities" > /dev/null
if [ $status -eq 0 ]
ssh-add
if [ $status -eq 2 ]
start_agent
end
end
end
if [ -n "$SSH_AGENT_PID" ]
ps -ef | grep $SSH_AGENT_PID | grep ssh-agent > /dev/null
if [ $status -eq 0 ]
test_identities
end
else
if [ -f $SSH_ENV ]
. $SSH_ENV > /dev/null
end
ps -ef | grep $SSH_AGENT_PID | grep -v grep | grep ssh-agent > /dev/null
if [ $status -eq 0 ]
test_identities
else
start_agent
end
end
Я использую это:
vim ~/.profile
eval `/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh,gpg`
export SSH_AUTH_SOCK
export GPG_AGENT_INFO
Если вы используете файл azure .ppk
Просто преобразуйте его в pem и добавьте разрешение 400 с помощью простых шагов:
sudo apt-get install putty
puttygen <path_to_key>/keyname.ppk -O private-openssh -o <path>/aws_key.pem
sudo chmod 400 <path>/aws_key.pem
ssh -vi aws_key.pem ubuntu@<ip_address>
Этот документ в Atlassian исправил проблему для меня на Ubuntu 14.04 Server Edition:
Просто добавьте эти значения в ваш файл .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
И после входа в систему, он запрашивает пароль только один раз, и он кэширует. Вам не нужно вводить его каждый раз.
Добавьте в свою .ssh/config одну строку в начале:
AddKeysToAgent yes
и запустите git / ssh / ... Если этого недостаточно, проверьте свою версию ssh и убедитесь, что ssh-agent загружен этими инструкциями:
Сначала проверьте, что ваша версия ssh, она должна быть больше равной 7.2:
ssh -V
Если это так, просто добавьте в свою .ssh/config одну строку в начале:
AddKeysToAgent yes
Обычно дистрибутивы автоматически загружают ssh-agent. Чтобы проверить его, запустите
ps aux | grep -v grep | grep ssh-agent
Если вы не видите ни одной строки, содержащей его, вам нужно загрузить его, выполнив:
eval $(ssh-agent)
Обратите внимание, что это позволяет агенту только на текущем терминале, поэтому, чтобы включить его повсюду, вы можете попробовать добавить эту строку в свой файл ~/.profile и перезагрузиться.