1

Кажется, если я перезагружаюсь, мои настройки ssh стираются.

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

Должен ли я запустить эту команду в моей конфигурации bash, чтобы она запускалась каждый раз?

1 ответ1

4

Как правило, вы бы запускали ssh-keygen один раз, чтобы создать один закрытый ключ ssh в ~/.ssh/id_rsa , в паре с единственным подходящим открытым ключом в ~/.ssh/id_rsa.pub . Затем вы устанавливаете один открытый ключ на каждую из машин, на которой вам нужно выполнить ssh. Например, если это git-репо на Unix-подобной машине, вы добавите свой открытый ключ в ~/.ssh/authorized_keys в домашнем каталоге вашей учетной записи на этом сервере .

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

После этого вы можете ssh к этой машине через ssh или клонировать репозиторий с помощью git clone ssh://... или чего-либо другого без запроса пароля.

Похоже, вместо того, чтобы настраивать ssh обычным способом, как я описал выше, вместо этого вы сгенерировали две отдельные пары закрытых и открытых ключей, и они не находятся в вашей папке ~/.ssh/ , и поэтому ssh не может найти их нормально. Похоже, вы установили два отдельных открытых ключа на других серверах, по одному на каждом из двух серверов git repo. Это также звучит так, как будто вы запустили ssh-agent и использовали ssh-add с аргументами, чтобы сообщить ему о каком-то альтернативном месте, где он может найти ваши пары закрытых и открытых ключей. Таким образом, каждый раз, когда вы выходите из системы или перезагружаетесь, ssh-agent завершается, и поэтому вам приходится каждый раз вручную перезапускать ssh-agent и ssh-add .

Это объяснение того, что происходит для вас, кажется мне более вероятным, чем идея, что что-то удаляет ~/.ssh/ каждой перезагрузке.

Если бы я был вами, я бы выбрал одну из двух моих пар ключей в качестве моей личности, поместил бы эту пару в ~/.ssh/ , установил открытый ключ этой пары на оба сервера git repo и не стал бы беспокоиться о ssh-agent и ssh-add вообще.

Однако обратите внимание, что есть еще один шаг, который вам нужно сделать, ЕСЛИ ваше имя пользователя на серверах git repo отличается от вашего имени пользователя, которое вы используете для локальной учетной записи на своем клиентском компьютере. Вам нужно создать файл ~/.ssh/config чтобы ssh знал, какое имя пользователя использовать при подключении к этим другим машинам. Формат очень прост:

Host gitrepo1.example.com
User myGitRepo1Username
Host gitrepo2.example.com
User myGitRepo2Username

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .