ssh к гостевой виртуальной машине qemu без ввода пароля

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

Итак, во-первых, я пытаюсь сделать это для подключения к хосту. Я копирую файл id_rsa.pub в папке .ssh с клиента в файл хоста с именем author_keys в папке .ssh. Затем, когда я «ssh root@hostname», он работает нормально, и мне не нужно вводить пароль (обратите внимание, что учетная запись моего клиента не является root).

Затем я пытаюсь сделать то же самое для гостевой виртуальной машины в хосте. Скопировал этот же файл в гостевую. Я запустил гостя, используя qemu с параметром «-net user,vlan=0,hostfwd=tcp::5555-:22», который будет перенаправлять запросы на порт хоста 5555 на порт 22 гостя. Затем в клиенте я выполнил " ssh -p 5555 root@hostname ". Это не удалось. Это показывает, что ключ RSA для хоста изменился или что-то в этом роде... Обратите внимание, что моя гостевая учетная запись также является root, и я могу использовать Putty для ssh для гостя, подключившись к порту 5555 хоста. И я считаю, что права доступа к файлам также правильно обрабатываются.

Кто что знает :>


person Hao Shen    schedule 24.09.2012    source источник


Ответы (1)


Да, это правильное поведение.

Когда вы подключаетесь к хост-системе в первый раз, ssh на вашем клиентском компьютере спросит вас, действительно ли машина с отпечатком пальца bla-bla-bla является той, к которой вы хотите подключиться. Вы ответили «да», и ssh на вашей клиентской машине запомнил имя хоста, IP и отпечаток в файле ~/.ssh/known_hosts. Затем во время всех последующих подключений он проверяет, что отпечаток пальца не изменился, поскольку изменение указывает на то, что процесс аутентификации требует вашего внимания. Уважительных причин несоответствия может быть несколько:

  • вы переустановили sshd на удаленном хосте;
  • ваш хост использует DHCP для получения своего IP-адреса, и IP-адрес был изменен.

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

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

В вашем случае вы сначала входите в систему с IP-адреса abcd через порт 22. Затем вы пытаетесь войти с тем же IP-адресом abcd через порт 5555. За этим портом находится ваша виртуальная машина с другим отпечатком пальца. Так что ssh жалуется.

Решением вашей проблемы будет вход в хост-систему, а затем из этого сеанса удаленной оболочки в виртуальную машину. Также я бы порекомендовал вам сгенерировать еще одну пару открытых/закрытых ключей для этого «удаленного» соединения. Таким образом, когда ваш закрытый ключ, хранящийся на хосте, скомпрометирован, ваш закрытый ключ, хранящийся на вашей рабочей станции, остается действительным.

person Serge    schedule 24.09.2012
comment
@ Серж Привет, большое спасибо за ответ. Это имеет смысл. Так отпечаток идет с ip ,независимо от порта? :‹ Но я не совсем понимаю, что вы имеете в виду, говоря, а затем из этого сеанса удаленной оболочки в ВМ. Я хочу написать скрипт на клиентской машине, делая это автоматически (в идеале без участия человека). Можете ли вы предоставить более подробную информацию :› - person Hao Shen; 25.09.2012
comment
Да, независимо от порта. Но я не совсем... Вы входите в хост-систему и вводите команду ssh your-vm-address в командной строке оболочки удаленной системы. Что касается автоматизации процесса, попробуйте на своей рабочей станции эту команду: ssh root@your-remotehost 'ssh your-vm-address' - person Serge; 25.09.2012