Я следую относительно короткому и простому руководству по этому вопросу (https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys--2)
Шаг первый - создание пары ключей RSA
ssh-keygen -t rsa
"Ваш открытый ключ был сохранен в /Users/justinobrien/.ssh/id_rsa.pub". Хорошо. Я переименовал открытый и закрытый ключи в 'justin' и 'justin.pub' (так как я должен сделать это и для пользователя root).
Шаг третий - скопируйте открытый ключ: Вы можете вставить ключи с помощью ssh:
cat ~/.ssh/id_rsa.pub | ssh demo@198.51.100.0 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys"
Я заменил ip на свой ip, имя моих файлов и имя моего пользователя ('justin') так:
cat ~/.ssh/justin.pub | ssh justin@42.93..***"mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys"
"You may see something like:"
The authenticity of host '198.51.100.0 (198.51.100.0)' can't be established.
RSA key fingerprint is b1:2d:33:67:ce:35:4d:5f:f3:a8:cd:c0:c4:48:86:12.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '198.51.100.0' (RSA) to the list of known hosts.
user@198.51.100.0's password:
Но это не то, что я вижу, я ввожу команду выше и получаю только запрос на вход с моим паролем? Т.е. все что я вижу это: justin@142.93.184.125's password:
Обновление, в комментариях ниже я обнаружил, что, возможно, я уже настроил это и мне просто нужно перезапустить сервер: Я выполнил sudo reboot
. Теперь я могу попытаться подключиться снова как 'root' или 'Justin' 3 раза, прежде чем меня попросят ввести пароль :
ssh justin@142.93..***
ssh: connect to host 142.93..*** port 22: Operation timed out
ssh justin@142.93..***
ssh: connect to host 142.93..*** port 22: Connection refused
ssh justin@142.93..***
ssh: connect to host 142.93..*** port 22: Connection refused
Если я попробую в четвертый раз, он спросит мой пароль и позволит мне подключиться. Не совсем понимаю, что здесь происходит. Я выполнил sudo ufw allow 22
безрезультатно. Спасибо за любую помощь.
Вы можете указать параметр -v
(подробный) в своем SSH-соединении, чтобы увидеть, что происходит под капотом. Сообщение отладки предоставит некоторые указатели для выяснения основной причины.
При копировании открытого ключа вы можете ввести команду следующим образом.
cat ~/.ssh/id_rsa.pub | ssh -v justin@SERVER-IP "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys"
Обратите внимание, что в приведенной выше команде копирования открытого ключа пропущена часть установки разрешения authorized_keys
на 600.
Если вы сгенерируете пару ключей с помощью этой команды:
ssh-keygen -t rsa
Закрытый и открытый ключи будут использовать алгоритм по умолчанию (RSA), длину ключа по умолчанию (2048) и сохранять с именами по умолчанию (~ / .ssh / id_rsa для закрытого ключа и ~ / .ssh / id_rsa.pub) для открытого ключа. Вы не должны изменять имя файла, иначе клиент не сможет обменяться ключами во время установления связи SSH.
Сообщение об ошибке ssh: connect to host 142.93 .. *** port 22: Operation timed out
указывает на проблему с сетью, а не на проблему с аутентификацией SSH.
Если вы хотите разобраться в деталях беспарольной аутентификации SSH на уровне протокола, а также о том, как ее настроить, эта статья может оказаться полезной.