Назад | Перейти на главную страницу

Как настроить ssh для пары серверов?

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

Итак, я хочу вот это. Я хочу иметь возможность войти на пару серверов с клиента через ssh, чтобы провести на них тесты. Это должно быть сделано таким образом, чтобы я сначала вошел в систему с пользователем и паролем, получил ключевой файл, вышел из системы, а затем снова зашел в систему, используя ключевой файл. Я должен иметь возможность использовать один и тот же ключевой файл для входа на все серверы. Это очень важно, потому что мне НЕ разрешено сохранять ключевой файл на клиенте. Даже не как временный файл, поэтому мне нужно как-то сохранить его в оперативной памяти. Но это более поздняя (и уже решенная) проблема.

Итак, как мне это настроить? Где и как мне сгенерировать ключи? Как мне передать их на другие серверы? На серверах работает CentOS 7. Думаю, мне следует загрузить закрытый ключ, а не открытый. Это правильно? Высокая безопасность вызывает беспокойство.

На вашей рабочей станции:

Запустите ssh-agent на своей рабочей станции, если он еще не запущен.

Проверить с ssh-add -L ; сообщение об ошибке Could not open a connection to your authentication agent. означает, что вам нужно запустить агент:

$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-yE5gDiNI3IqX/agent.13754; export SSH_AUTH_SOCK;
SSH_AGENT_PID=13755; export SSH_AGENT_PID;
echo Agent pid 13755;

И следуйте печатным инструкциям и настройте свою среду:

$ SSH_AUTH_SOCK=/tmp/ssh-yE5gDiNI3IqX/agent.13754; export SSH_AUTH_SOCK;
$ SSH_AGENT_PID=13755; export SSH_AGENT_PID;
$ echo Agent pid 13755;
Agent pid 13755

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

$ ssh -A host.example.com
user@host.example.com's password:

На первом сервере

Только один раз: Тебе надо создать новую пару ключей; видеть https://security.stackexchange.com/q/143442/77995

[user@host.example.com ~] $ ssh-keygen ***+options***

Только один раз (для каждого сервера и аккаунта): Вам нужно скопировать public_key этой новой пары ключей с этого сервера и добавить его в ~/.ssh/authorized_keys файл на серверах, к которым вы хотите получить доступ. Вы можете использовать вспомогательную программу ssh-copy-id, чтобы сделать это за вас:

 [user@host.example.com ~] $ ssh-copy-id localhost

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

 [user@host.example.com ~] $ ssh-copy-id other-user@other-host.example.com 

Каждый раз, когда вы перезагружаете свою рабочую станцию, и ssh-agent перезапускается: добавить эту личность в связку ключей

[user@host.example.com ~] $ ssh-add .ssh/id_rsa    # or wherever the private key is stored
Identity added: .ssh/id_rsa (rsa-key-xxx)

и выйти:

[user@host.example.com ~]  $ logout

Потом:

И когда вы в следующий раз войдете в ssh со своей рабочей станции, будет использовать ключ, хранящийся в агенте, для аутентификации на основе ключей, и вы не увидите запроса пароля:

 $ ssh host.example.com