Добавить закрытый ключ постоянно с ssh-добавить на Ubuntu

У меня есть закрытый ключ, защищенный паролем для доступа к серверу через SSH.

У меня есть 2 linux (ubuntu 10.04) машины, и поведение команды ssh-add отличается в обоих из них.

на одной машине, как только я использую " ssh-add .ssh / identity " и ввел мой пароль, ключ был добавлен постоянно, т. е. каждый раз, когда я выключаю компьютер и снова вхожу в систему, ключ уже добавлен.

в другом, я должен добавить ключ каждый раз, когда я войти в систему.

насколько я помню, я сделал то же самое на обоих. Единственное отличие состоит в том, что ключ был создан на том, который добавляется постоянно.

кто-нибудь знает, как добавить его постоянно на другую машину?

13 ответов


решением было бы заставить ключевые файлы храниться постоянно, добавив их в свой :

IdentityFile ~/.ssh/gitHubKey
IdentityFile ~/.ssh/id_rsa_buhlServer 

если вы хотите, чтобы все пользователи на компьютере, использовать ключевые положить эти строки в /etc/ssh/ssh_config и ключ в папке, доступной для всех.

кроме того, если вы хотите установить ключ для одного хоста, вы можете сделать следующее в ваш файл ~/.ssh / config:

Host github
    HostName github.com
    User git
    IdentityFile ~/.ssh/githubKey

вам нужно будет клонировать с @github вместо @github.com, но это имеет преимущество в том, что будет опробован только этот ключ.


Это не ответило на ту же проблему для меня под Mac OS X Lion. Я закончил тем, что добавил:

ssh-add ~/.ssh/id_rsa &>/dev/null

к моему .zshrc (но .профиль тоже был бы в порядке), который, похоже, исправил его.

(Как предложено здесь: http://geek.michaelgrace.org/2011/09/permanently-add-ssh-key-ssh-add/ )


Я решил эту проблему на Mac OSX (10.10), используя опцию-K для ssh-add:

ssh-add -K ~/.ssh/your_private_key

для macOS 10.12 и потом нужно дополнительно редактировать по SSH config, как описано здесь: https://github.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain


просто добавьте брелок, как указано в Ubuntu Quick Tips https://help.ubuntu.com/community/QuickTips

что

вместо того, чтобы постоянно запускать ssh-agent и ssh-add, можно использовать keychain для управления ключами ssh. Чтобы установить keychain, вы можете просто нажать здесь или использовать Synaptic для выполнения задания или apt-get из командной строки.

Командная строка

другой способ установки файл должен открыть терминал (приложение- > аксессуары - >терминал) и введите:

sudo apt-get install keychain

Редактировать Файл

затем вы должны добавить следующие строки в свой ${HOME}/.bashrc или /и т. Д./Баш.bashrc следующее:

keychain id_rsa id_dsa
. ~/.keychain/`uname -n`-sh

я попробовал решение @Aaron, и это не совсем сработало для меня, потому что он будет повторно добавлять мои ключи каждый раз, когда я открываю новую вкладку в моем терминале. Поэтому я немного изменил его (обратите внимание, что большинство моих ключей также защищены паролем, поэтому я не могу просто отправить вывод в /dev/null):

added_keys=`ssh-add -l`

if [ ! $(echo $added_keys | grep -o -e my_key) ]; then
    ssh-add "$HOME/.ssh/my_key"
fi

что это делает, так это то, что он проверяет вывод ssh-add -l(в котором перечислены все ключи, которые были добавлены) для определенного ключа, и если он не найдет его, то он добавляет его с ssh-add.

теперь, когда я впервые открываю свой терминал, меня спрашивают пароли для моих закрытых ключей, и меня не спрашивают снова, пока я не перезагружу(или не выйду из системы - я не проверил) свой компьютер.

так как у меня есть куча ключей, я храню вывод ssh-add -l в переменной для повышения производительности(по крайней мере, я думаю, что это улучшает производительность :) )

PS: Я на linux, и этот код пошел в мой ~/.bashrc файл-если вы находитесь на Mac OS X, то я предполагаю, что вы должны добавить его в .zshrc или .profile

изменить: Как отметил @Aaron в комментариях,.zshrc файл используется из zsh shell-поэтому, если вы не используете это(если вы не уверены, то, скорее всего, вы используете bash вместо этого), этот код должен перейти к вашему .


в моем случае решение было:

разрешения на файл конфигурации должны быть 600. chmod 600 config

Как упоминалось в комментариях выше generalopinion

нет необходимости касаться содержимого файла конфигурации.


на Ubuntu 14.04 (может быть, раньше, может быть, еще) вам даже не нужна консоль:

  • старт seahorse или запустите эту вещь, которую вы найдете в поиске "ключа"
  • создайте там SSH-ключ (или импортируйте его)
    • Не надо оставлять пароль пустым
    • вам предлагается даже нажать открытый ключ на сервер (или более)
  • вы в конечном итоге с ssh-агентом работает и этот ключ загружен, но заперто
  • используя ssh будет пикап идентичности (т. е. ключ) через агента
  • при первом использовании во время сеанса будет проверена парольная фраза
    • и у вас есть возможность автоматически разблокировать ключ на вход
    • это означает, что аутентификация входа будет использоваться для обертывания парольной фразы ключа
  • Примечание: Если вы хотите переслать вашу личность (т. е. агент-переадресация) вызова ssh С -A или сделать что по умолчанию
    • в противном случае вы не может проверить подлинность с помощью этого ключа на машине вы входите в систему позже на третью машину

очень просто ^_^ два шага

1.ням установить брелок

2.добавьте код ниже .файл

/usr/bin/keychain $HOME/.ssh/id_dsa
source $HOME/.keychain/$HOSTNAME-sh

добавление следующих строк в"~/.bashrc " решил этот вопрос за меня. Я использую рабочий стол Ubuntu 14.04.

eval `gnome-keyring-daemon --start`
USERNAME="reynold"
export SSH_AUTH_SOCK="$(ls /run/user/$(id -u $USERNAME)/keyring*/ssh|head -1)"
export SSH_AGENT_PID="$(pgrep gnome-keyring)"

это сработало для меня.

ssh-agent /bin/sh
ssh-add /path/to/your/key

Я запускаю Ubuntu, используя два ключа id_rsa. (один личный для работы). ssh-add будет помнить один ключ (личный) и забывать о компании каждый раз.

проверяя разницу между двумя, я видел, что мой личный ключ имел 400 прав, в то время как у компании было 600 прав. (ю+ш). Удаление записи пользователя прямо из ключа компании (u-w или set to 400) исправило мою проблему. ssh-add теперь запоминает оба ключа.


для тех, кто использует рыбную раковину, вы можете использовать следующую функцию, а затем вызвать ее в~/.config / fish / config.рыба. Он загрузит все ключи, которые начинаются с id_rsa на ssh-agent.

# Load all ssh keys that start with "id_rsa"
function loadsshkeys
  set added_keys (ssh-add -l)
   for key in (find ~/.ssh/ -not -name "*.pub" -a -iname "id_rsa*")
    if test ! (echo $added_keys | grep -o -e $key)
      ssh-add "$key"
    end
  end
end

# Call the function to run it.
loadsshkeys

Если вы хотите иметь ssh-agent автоматический запуск при открытии терминала вы можете использовать тувиставие / Фиш-СШ-агент для этого.


у меня была такая же проблема на Ubuntu 16.04: некоторые ключи были добавлены постоянно, для других мне пришлось выполнить ssh-add на каждой сессии. Я узнал, что ключи, которые были добавлены постоянно, имели как закрытый, так и открытый ключ, расположенный в ~/.ssh и ключи, которые были забыты на каждом сеансе, имели только закрытые ключи в ~/.ssh реж. Поэтому решение простое: вы должны скопировать и закрытый и открытый ключ к ~/.ssh до исполнения ssh-add.