Как навсегда добавить закрытый ключ с помощью ssh-add в Ubuntu?[закрыто]

StackOverflow https://stackoverflow.com/questions/3466626

  •  28-09-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

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

Это было полезно?

Решение

Решение будет заставить ключевые файлы сохраняться постоянно, добавив их в свой ~/.ssh/config файл:

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

Если у вас нет файла «Config» в каталоге ~ / .ssh, вы должны создать один. Это не нуждается в корневых правах, так что просто:

nano ~/.ssh/config

... и введите строки выше согласно вашим требованиям.

Для этого для работы файл должен иметь CHMOD 600. Вы можете использовать команду chmod 600 ~/.ssh/config.

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

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

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

Это имеет преимущество, когда у вас есть много личностей, которые сервер не отклоняет вас, потому что вы сначала попробовали неправильные идентичности. Только конкретная идентичность будет пробовать.

Другие советы

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

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

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

(Как предложено здесь: http://geek.michaelgrace.org/2011/09/permanente-ad-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 Tipshttps://help.ubuntu.com/community/quicktips

какой

Вместо того, чтобы постоянно запустить SSH-Agent и SSH-Add, можно использовать брелок для управления ключами SSH. Чтобы установить брелок, вы можете просто нажать здесь или использовать 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 файл - если вы находитесь на Mac OS X, то я предполагаю, что вы должны добавить его в .zshrc или .profile

Редактировать: как указано @aaron в комментариях, .zshrc Файл используется из zsh Shell - так что если вы не используете это (если вы не уверены, то скорее всего, вы используете bash Вместо этого) этот код должен идти к вашему .bashrc файл.

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

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

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

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

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

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

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

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

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

Добавление следующих строк в «~ / .bashrc» решил проблему для меня. Я использую Desktop 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)"

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

1.yum install keychain

2.Дадный код ниже .bash_profile

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

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

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

Для тех, кто использует рыбную оболочку, вы можете использовать следующую функцию, а затем вызовите ее в ~ / .Config / fish / config.fish. Это загрузит все клавиши, которые начинаются с 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-агент сделать это.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top