Добавить закрытый ключ постоянно с ssh-добавить на Ubuntu
У меня есть закрытый ключ, защищенный паролем для доступа к серверу через SSH.
У меня есть 2 linux (ubuntu 10.04) машины и поведение команды ssh-add отличается в обоих из них.
в одной машине, как только я использую "ssh-add .ssh / identity " и ввел свой пароль, ключ был добавлен постоянно, т. е. каждый раз, когда я выключаю компьютер и снова вхожу в систему, ключ уже добавлен.
в другой, я должен добавить ключ каждый раз, когда я войти.
насколько я помню, я сделал то же самое на обоих. Единственное отличие заключается в том, что ключ был создан на том, который добавляется постоянно.
кто-нибудь знает, как добавить его постоянно на другую машину?
13 ответов:
решением было бы заставить ключевые файлы храниться постоянно, добавив их в свой
~/.ssh/config
file: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, как описано здесь: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 или / etc / bash.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
file-если вы находитесь на Mac OS X, то я предполагаю, что вы должны добавить его в.zshrc
или.profile
изменить: Как указал @Aaron в комментариях,
.zshrc
файл используется изzsh
shell-так что если вы не используете это(если вы не уверены, то, скорее всего, вы используетеbash
вместо этого), этот код должен перейти к вашему .
в моем случае решение было:
разрешения на файл конфигурации должны быть 600.
chmod 600 config
Как уже упоминалось в комментариях выше генералопинион
нет необходимости прикасаться к содержимому файла конфигурации.
на Ubuntu 14.04 (может быть, раньше, может быть, еще) вам даже не нужна консоль:
- start
seahorse
или запустите эту вещь, которую вы найдете, ища "ключ"- создать SSH ключ там (или импортировать один)
- Не нужно оставлять парольную фразу пустой
- вам предлагается даже нажать открытый ключ на сервер (или более)
- вы в конечном итоге с ssh-агентом работает и этот ключ загружен, но заперто
- используя
ssh
будет пикап идентичность (т. е. ключ) через агента- при первом использовании во время сеанса будет проверена парольная фраза
- и у вас есть возможность автоматически разблокировать ключ на вход
- это означает, что аутентификация входа будет использоваться для обертывания парольной фразы ключа
- Примечание: Если вы хотите переслать вашу личность (т. е. агент-переадресация) вызова
ssh
С-A
или сделать что по умолчанию
- в противном случае вы не может проверить подлинность с помощью этого ключа на машине вы входите в систему позже на третью машину
очень просто ^_^ два шага
1.ням установить брелок
2.добавьте код ниже .файл
/usr/bin/keychain $HOME/.ssh/id_dsa source $HOME/.keychain/$HOSTNAME-sh
добавление следующих строк в"~/.bashrc " решил эту проблему для меня. Я использую Ubuntu 14.04 desktop.
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)"
Я запускаю Ubuntu, используя два ключа id_rsa. (один личный для работы). ssh-add будет помнить один ключ (личный) и каждый раз забывать о компании.
проверяя разницу между двумя, я увидел, что мой личный ключ имел 400 прав, а у компании было 600 прав. (ю+ш). Удаление записи пользователя прямо из ключа компании (u-w или значение 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
автоматически запускаться при открытии терминала вы можете использовать tuvistavie / fish-ssh-agent для этого.
у меня была такая же проблема на Ubuntu 16.04: некоторые ключи были добавлены постоянно, для других я должен был выполнить
ssh-add
на каждой сессии. Я узнал, что ключи, которые были добавлены постоянно, имели как закрытый, так и открытый ключ, расположенный в~/.ssh
и ключи, которые были забыты на каждом сеансе, имели только закрытые ключи в~/.ssh
реж. Так что решение простое: вы должны скопировать и закрытый и открытый ключ к~/.ssh
до исполненияssh-add
.