// Начинаем редактировать
Теперь я должен отметить, что я немного повозился, что все работает как задумано, если я использую переключатель «-i identity_file» при подключении из «Автоматизации» и указываю это на закрытый ключ в «Автоматизации».
// Конец редактирования
Здесь задействованы три системы.
1) Производство
2) Рабочая станция
3) Автоматизация
Номера 2 и 3 находятся в одной сети, номер 1 - в удаленной сети. № 3 не имеет подключенного монитора, он управляется через SSH с № 2.
Теперь для №2 доступны открытые / закрытые ключи, и он может подключаться к №1 и №3 без пароля.
Мне нужно подключиться к №1 из №3 таким же образом. Сначала я попытался скопировать ключи №2, используемые для №1, на №3. Мне предлагается ввести пароль, когда я пытаюсь подключиться к №1 из №3. Я использовал ssh-keygen при входе в # 3 и импортировал эти ключи в # 1 так же, как и при настройке # 2 для подключения к # 1. Мне все еще предлагается ввести пароль.
Почему мне предлагается ввести пароль при подключении с №3, а не с №2?
Единственная разница, о которой я могу думать, это то, что при подключении с №3 я уже удаленно вошел в №3 с №2.
Ваш первоначальный вопрос, похоже, касался доступа к нескольким системам друг от друга с помощью вашего ssh, и я предоставил ответ, предлагающий ssh-agent (ниже). После прочтения ваших комментариев я понял, что у вас другая проблема.
В своем вопросе вы упомянули, что скопировали как закрытый, так и открытый ключ со своей рабочей станции на другой компьютер, который будет использоваться службой, которую вы пытаетесь автоматизировать. Это плохая идея. Ключи SSH действительно должны идентифицировать отдельного пользователя или отдельную службу. Закрытые ключи не должны передаваться между вами и учетной записью службы в другой системе. Вы должны были создать новый набор ключей на своем сервере.
Я предполагаю, что наиболее вероятная причина проблем с подключением связана с тем, как вы скопировали ключи со своей рабочей станции в другую систему. OpenSSH очень требователен к владению и разрешению ключей. Закрытый ключ должен принадлежать пользователю, использующему его, и должен иметь права доступа 0600. Если ключ доступен для чтения группой / другим, то ssh откажется его использовать. Если вы укажете параметр -v для ssh, когда пытаетесь подключиться, вы увидите жалобу на разрешения ключа.
Так что я рекомендую вам сгенерировать новый набор ключей для учетной записи службы на вашем хосте автоматизации, а затем передайте открытый ключ на другой сервер.
Поскольку похоже, что вы доверяете этим системам, и все ваши соединения изначально создаются с рабочей станции, вы можете просто запустить Агент SSH на своей рабочей станции добавьте свой ключ к агенту и включите переадресацию агента в конфигурации клиента на всех ваших хостах.
Если вы используете OpenSSH, вот как вы делаете то, что предлагал Zoredache:
В machine-1
, запустите агент SSH (если он еще не запущен; например, GNOME запускает его автоматически):
one$ eval $(ssh-agent) Agent pid
Загрузите свой ключ в агент: (опять же, GNOME gnome-keyring
делает это автоматически; использовать ssh-add -l
чтобы перечислить все ключи.)
one$ ssh-add Enter passphrase for /home/grawity/.ssh/id_rsa: ******один $ ssh-add -l 4096 11: 83: 7a: 39: 74: 9d: 75: e6: 90: 35: 34: 23: f5: d7: 6b: 6a /home/grawity/.ssh/id_rsa
Присоединиться machine-2
, с включенной переадресацией агента:
one$ ssh -A machine-2
После подключения убедитесь, что переадресация агента работает:
two$ ssh-add -l 4096 11:83:7a:39:74:9d:75:e6:90:35:34:23:f5:d7:6b:6a /home/grawity/.ssh/id_rsa
И если работает, подключайтесь из machine-2
к machine-3
, а затем обратно к machine-1
:
two$ ssh -A machine-3 three$ ssh -A machine-1 one$ _
Если все сработало, отредактируйте ~/.ssh/config
и добавить:
Host machine-1 machine-2 machine-3 AgentForwarding yes