У меня есть одно ведущее устройство и четыре ведомых компьютера. Я генерировал rsa общественность/закрытый ключ на основном ПК. Затем я скопировал открытый ключ (id_rsa.pub
) к ведомым машинам как authorized_keys
.
Это не спрашивает пароль, когда я вызываю SSH как это на терминале основного ПК:
ssh –o UserKnownHostsFile=/dev/null –o StrictHostKeyChecking=no hduser@slave1
Я записал этот сценарий для автоматического входа в систему в ведомые машины, не спрашивая пароль.
SERVER_LIST=`cat /home/hduser/slaves` # slave1, slave2 ...
USERNAME=hduser
for host in $SERVER_LIST; do
ssh –t –o UserKnownHostsFile=/dev/null –o StrictHostKeyChecking=no -l ${USERNAME} ${host};
done
SSH спрашивает ведомые пароли, когда я использую этот сценарий. Я получаю это сообщение когда использование SSH с -vv
опция:
Я изменил полномочия на основном ПК и ведомом ПК.
sudo chmod 700 -R ~/.ssh
sudo chown hduser ~/.ssh
Это, все еще спрашивая пароль. Что я пропускаю? Как я могу зафиксировать его?
Попытайтесь использовать -i
аргумент. От человека:
-i identity_file
Selects a file from which the identity (private key) for RSA or
DSA authentication is read. The default is ~/.ssh/identity for
protocol version 1, and ~/.ssh/id_rsa and ~/.ssh/id_dsa for pro-
tocol version 2. Identity files may also be specified on a per-
host basis in the configuration file. It is possible to have
multiple -i options (and multiple identities specified in config-
uration files).
Тогда можно определить ключ для использования для каждого хоста.
Сценарий так или иначе смотрит на корневой каталог для отправки закрытого ключа. Это работает, после того, как скопировано id_rsa
и id_rsa.pub
под /home/hduser/.ssh/
каталог к /root/.ssh/
каталог.
sudo cp -av /home/hduser/.ssh/id_rsa /root/.ssh/
sudo cp -av /home/hduser/.ssh/id_rsa.pub /root/.ssh/