У меня есть закрытый ключ, защищенный паролем для доступа к серверу через SSH.
У меня есть 2 машины linux (ubuntu 10.04), и поведение команды ssh-add у них различное.
На одной машине, когда я использую «ssh-add .ssh / identity» и ввожу свой пароль, ключ добавлялся постоянно, т.е. каждый раз, когда я выключаю компьютер и снова захожу, ключ уже добавляется.
В другой я должен добавлять ключ каждый раз, когда я вхожу в систему.
Насколько я помню, я сделал то же самое на обоих. Разница лишь в том, что ключ был создан на том, который добавлен навсегда.
Кто-нибудь знает, как добавить его на другую машину?
Ответы:
Решением было бы принудительно сохранить ключевые файлы, добавив их в ваш
~/.ssh/config
файл:Если у вас нет файла «config» в каталоге ~ / .ssh, вам следует его создать. Для этого не нужны рут права, так просто:
... и введите строки выше в соответствии с вашими требованиями.
Чтобы это работало, файл должен иметь команду chmod 600. Вы можете использовать команду
chmod 600 ~/.ssh/config
.Если вы хотите, чтобы все пользователи компьютера использовали ключ, вставьте эти строки
/etc/ssh/ssh_config
и ключ в папку, доступную для всех.Кроме того, если вы хотите установить ключ, специфичный для одного хоста, вы можете сделать следующее в ~ / .ssh / config:
Это имеет преимущество, когда у вас много идентификаторов, что сервер не отклоняет вас, потому что вы сначала пробовали неправильные идентификаторы. Будет проверена только конкретная личность.
источник
chmod 600 config
ssh-add ~/.ssh/gitHubKey
, он запомнит вашу ключевую фразу-пароль. Решение, которое я предложил, состояло в том, чтобы установить его постоянно при перезагрузках.Это не отвечало на ту же проблему для меня под Mac OS X Lion. Я закончил тем, что добавил:
На мой .zshrc (но .profile тоже подойдет), который, похоже, это исправил.
(Как предлагается здесь: http://geek.michaelgrace.org/2011/09/permanently-add-ssh-key-ssh-add/ )
источник
ForwardAgent yes
к моему.ssh/config
) решило эту проблему фантастически. Как оказалось, это может быть простоssh-add &>/dev/null
поведение по умолчаниюssh-add
для добавления ключей, которые он находит в вашей.ssh
папке.-K
добавляет ключи в цепочку ключей OS X, которые используются в GUI OS X для аутентификации на сторонних серверах. Постер в том Q соединяется через SSH Tunnel, но все еще только соединяется с удаленным сервером. A - [SSH Tunnel] -> B Дело в том, что я нахожусь на удаленном сервере, но хочу, чтобы проверка подлинности проводилась против учетных данных в моей домашней системе. A <- [Auth] - B - [Connect] -> C Так-K
что на самом деле не помогает, но является отличным решением для другой Q.Я решил эту проблему на Mac OSX (10.10), используя опцию -K для ssh-add:
Для macOS 10.12 и более поздних версий вам необходимо дополнительно отредактировать конфигурацию ssh, как описано здесь: https://github.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain
источник
man ssh-add
MacOS High Sierra,ssh-add -K
сохранит ключевую фразу в цепочку для ключей, а после перезагрузки просто используйтеssh-add -A
, для которой вам не нужно вводить вашу ключевую фразу.Просто добавьте цепочку для ключей, как указано в Ubuntu Quick Tips https://help.ubuntu.com/community/QuickTips
какая
Вместо постоянного запуска ssh-agent и ssh-add можно использовать цепочку ключей для управления ключами ssh. Чтобы установить связку ключей, вы можете просто щелкнуть здесь или использовать Synaptic для выполнения работы или apt-get из командной строки.
Командная строка
Другой способ установить файл - открыть терминал (Приложение-> Аксессуары-> Терминал) и набрать:
Редактировать файл
Затем вы должны добавить следующие строки в ваш $ {HOME} /. Bashrc или /etc/bash.bashrc:
источник
.
псевдоним дляsource
Я попробовал решение @ Aaron, и оно мне не помогло, потому что оно будет заново добавлять мои ключи каждый раз, когда я открываю новую вкладку в своем терминале. Поэтому я немного его изменил (обратите внимание, что большинство моих ключей также защищены паролем, поэтому я не могу просто отправить вывод в / dev / null):
Что он делает, так это то, что он проверяет вывод
ssh-add -l
(в котором перечислены все ключи, которые были добавлены) для определенного ключа, и если он не находит его, то он добавляет егоssh-add
.Теперь, когда я в первый раз открываю свой терминал, меня спрашивают пароли для моих закрытых ключей, и меня больше не спрашивают, пока я не перезагружу (или выйду из системы - я не проверял) мой компьютер.
Поскольку у меня есть куча ключей, я сохраняю выходные данные
ssh-add -l
в переменной для повышения производительности (по крайней мере, я предполагаю, что это улучшает производительность :))PS: я нахожусь на Linux, и этот код пошел в мой
~/.bashrc
файл - если вы на Mac OS X, то я предполагаю, что вы должны добавить его в.zshrc
или.profile
РЕДАКТИРОВАТЬ: Как отметил @Aaron в комментариях,
.zshrc
файл используется изzsh
оболочки - поэтому, если вы не используете это (если вы не уверены, то, скорее всего, вы используетеbash
вместо этого), этот код должен перейти к вашему.bashrc
файлу.источник
.zshrc
дляzsh
оболочки, которую я использую вместоbash
. Если вы используетеbash
в Mac OS X (по умолчанию), он также будет.bashrc
там.ssh-add -l
кода возвратаecho $?
можно использовать, чтобы решить, добавлять ли ключ или нет. Я мой Linux-компьютер с Bash,ssh-add -l
не будет выводить имя файла ключа. Код возврата всегда работает.В моем случае решение было:
Как упомянуто в комментариях выше по genralopinion
Не нужно трогать содержимое файла конфигурации.
источник
~/.ssh/config
файл предназначен для чтения / записи для пользователя и недоступен для записи другими.У меня была такая же проблема в Ubuntu 16.04: некоторые ключи были добавлены навсегда, а другие мне приходилось выполнять
ssh-add
на каждом сеансе. Я обнаружил, что у ключей, которые были добавлены постоянно, были и закрытый, и открытый ключи,~/.ssh
а ключи, которые были забыты при каждом сеансе, имели только закрытые ключи в~/.ssh
dir. Поэтому решение простое: перед выполнением вы должны скопировать как закрытый, так и открытый ключ .~/.ssh
ssh-add
PS: Насколько я понимаю из вики Gnome, мой метод работает благодаря инструменту gnome-keyring, который является частью Gnome Desktop Environment. Поэтому мой метод, вероятно, должен работать, только если вы используете Gnome или DE на основе Gnome.
источник
Добавление следующих строк в "~ / .bashrc" решило проблему для меня. Я использую рабочий стол Ubuntu 14.04.
источник
В Ubuntu 14.04 (может быть, раньше, может быть, все еще) вам даже не нужна консоль:
seahorse
или запустить то, что вы найдете в поиске "ключ"ssh
будет забирать личность (т.е. ключ) через агентаssh
с помощью-A
или сделайте это по умолчаниюисточник
Я запускаю Ubuntu, используя два ключа id_rsa. (один персональный для работы). ssh-add запомнил бы один ключ (личный) и каждый раз забывал о компании.
Посмотрев разницу между ними, я увидел, что у моего личного ключа было 400 прав, а у корпоративного - 600 прав. (имел U + W). Удаление пользователя с правом записи с ключа компании (uw или значение 400) устранило мою проблему. ssh-add теперь запоминает оба ключа.
источник
Это сработало для меня.
источник
очень просто ^ _ ^ два шага
1. установить брелок
2. добавьте код ниже к .bash_profile
источник
Для тех, кто использует оболочку Fish, вы можете использовать следующую функцию, затем вызвать ее в
~/.config/fish/config.fish
или в отдельном файле конфигурации в~/.config/fish/conf.d/loadsshkeys.fish
. Он загрузит все ключи, которые начинаются с id_rsa вssh-agent
.Если вы хотите
ssh-agent
запустить авто при открытии терминала, вы можете использовать tuvistavie / fish-ssh-agent для этого.источник