Вы можете скопировать свой открытый ключ на удаленные машины. Пока у них включена аутентификация с открытым ключом, а ваш открытый ключ присутствует на удаленном компьютере, вы можете ssh
подключаться к машинам без необходимости ввода пароля.
Сначала вам нужно сгенерировать пару открытых / закрытых ключей, например:
ssh-keygen -t rsa
Следуйте инструкциям. Когда он спросит, хотите ли вы защитить ключ парольной фразой, скажите ДА! Это плохая практика - не защищать паролем свои ключи, и я покажу вам, как вводить пароль нужно только время от времени.
Если у вас уже есть пара ключей, вы можете пропустить шаг выше.
Теперь, предполагая, что ваш ключ ssh существует на вашем Mac as ~/.ssh/id_rsa.pub
, вы можете установить его на удаленном компьютере, запустив:
cat ~/.ssh/id_rsa.pub | ssh user@123.45.56.78 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Для приведенного выше примера конкретного сервера команда будет выглядеть так:
cat ~/.ssh/id_rsa.pub | ssh -p 2200 root@123.456.789.012 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Вам нужно будет ввести пароль для root@123.456.789.012
выполнения этой копии, но это должно быть в последний раз, когда вам нужно сделать это. Предполагая, что удаленный сервер sshd
настроен на выполнение аутентификации с использованием открытого и закрытого ключей, когда вы заходите в ssh сейчас, он не должен запрашивать пароль для root
учетной записи - вместо этого он запрашивает пароль для вашего ключа . Читайте дальше о том, как сделать это то, что вам не нужно вводить все время.
Повторите вышеуказанное для каждой машины, к которой вы хотите подключиться с помощью ключей, а не пароля.
Обратите внимание, что любой, кто получит ваш ~/.ssh/id_rsa
файл, может подключиться к этой машине по ssh, root
не вводя пароль для удаленной машины. Пароль, защищающий файл ключа, гарантирует, что им потребуется знать пароль для этого ключа, чтобы использовать его. Убедитесь, что файл в безопасности. Используйте шифрование диска на вашем Mac и сохраняйте права доступа к файлу и ~/.ssh/
каталогу.
Чтобы упростить использование ключа без необходимости каждый раз вводить пароль, OS X запускает ssh-agent
процесс в фоновом режиме на вашем компьютере. Этот агент будет кэшировать пару ключей при первом использовании, поэтому вам нужно будет вводить пароль только время от времени. Если вы только спите на своем Mac, никогда не перезагружаете его, вы можете работать в течение длительного периода времени без необходимости ввода пароля.
Вы можете предварительно кэшировать все ваши ключи SSH с ssh-agent
помощью команды:
ssh-add
Теперь вам нужно только запомнить пароль ключа , а не множество разных паролей учетной записи. Я обычно храню свои пароли ключей в 1Password (без присоединения), еще больше упрощая количество паролей, которые мне нужно запомнить. Затем я просто смотрю их в 1Password и вырезаю и вставляю их в Терминал в тот странный момент, когда я перезагружаю свой Mac и вызываю ssh-agent
перезапуск.
Если вы объедините в этом вопросе копирование своего ключа на удаленные машины с решением для управления соединениями Terminal.app , у вас будет что-то очень близкое к PuTTY для взаимодействия с GUI.
На стороне сервера проверьте /etc/ssh/sshd_config
и убедитесь, что:
PubkeyAuthentication yes
включен в конфигурации (по умолчанию в OpenSSH). Вы также можете установить:
PasswordAuthentication no
Пока вы там, аутентификация на основе пароля отключена, и ключи становятся единственным способом доступа к машине.
Вам нужно будет перезапустить sshd на компьютере, если вы внесете какие-либо изменения в файл конфигурации.