Я плохо знаком с этим поэтому немым это вниз немного для меня.
Я использую OSX локально, сервер Ubuntu для моего удаленного хоста на Linode. И к моему пониманию, я могу использовать ssh-keygen -b 4096
локально, для генерации двух файлов:
~/.ssh/id_rsa
и ~/.ssh/id_rsa.pub
И затем на моем сервере я работаю mkdir -p ~/.ssh && sudo chmod -R 700 ~/.ssh/
создать .ssh папку и дать ему рекурсивное чтение/запись/полномочия на исполнение для "владельца файла" (безотносительно то есть, согласно chmod Wiki).
Затем я звоню
scp ~/.ssh/id_rsa.pub example_user@123.4.567.89:~/.ssh/authorized_keys
Который я предполагаю использование ssh протокол для загрузки открытого ключа на сервер в недавно созданном authorized_key
файл в сервере .ssh
папка я просто создал.
Таким образом, я предполагаю, что это означает, что общедоступный файл идет на сервер, тогда как и общедоступный и частный файл находится на моей локальной машине.
Теперь скажем, я редактирую мой /etc/ssh/sshd_config
файл, где я могу смешать с PermitRootLogin
, PasswordAuthentication
, и ChallengeResponseAuthentication
.
Мои вопросы:
Я должен отключать корневой вход в систему? Если я установил PermitRootLogin
кому: no
или к without-password
? Я должен отключать все пароли и использовать ключи только, период? Что относительно PasswordAuthentication
и ChallengeResponseAuthentication
?
Действительно ли безопасно иметь файлы с открытым ключом и с закрытым ключом на моей локальной машине? Я должен удалять общедоступный и только держать на частный?
Если я только полагаюсь на ключ, не делает это означает, что я теперь подвергнут новой слабости: Кто-то входящий в мою машину и поэтому получающий доступ к моему файлу ключей?
"Лучшая практика" с ssh или любой сервер в этом отношении, к:
Оцените значение своего актива и данных по Вашему серверу, где Вы устанавливаете и настраиваете ssh. Действительно ли это - домашний компьютер позади LAN? Или общедоступный IP-адрес на сервере с уязвимыми данными, частной информацией, финансовой информацией? и т.д.
Считайте ВСЕ параметры безопасности.
Затем решите, как Вы хотите сбалансировать безопасность с простоты доступа, простоты конфигурации и значения Ваших активов.
Поскольку мои соображения на ssh видят - http://bodhizazen.com/Tutorials/SSH_security
Действительно ли безопасно иметь файлы с открытым ключом и с закрытым ключом на моей локальной машине? Я должен удалять общедоступный и только держать на частный?
Открытый ключ может быть получен из закрытого ключа (но не наоборот). Как я получаю открытый ключ от закрытого ключа SSH? Открытый ключ обеспечивается просто для удобства так, чтобы Вы не генерировали его каждый раз, когда необходимо добавить ключ к новому серверу.
Если я только полагаюсь на ключ, не делает это означает, что я теперь подвергнут новой слабости: Кто-то входящий в мою машину и поэтому получающий доступ к моему файлу ключей?
Вот почему Вы вслепую не нажимаете Enter при выполнении ssh-keygen
и вместо этого используйте сильный пароль (конечно, отличающийся от Вас пароль пользователя) для шифрования ключа.
Я должен отключать корневой вход в систему?
Это эффективно отключено по умолчанию, так как значения по умолчанию только позволяют основанный на ключе вход в систему, и корень не имеет authorized_keys
по умолчанию.
Если я установил
PermitRootLogin
кому:no
или кwithout-password
?
Это установлено на without-password
потому что это - безопасное значение по умолчанию. Можно установить его на no
если Вы так желаете. Однако, если Вы когда-нибудь должны rsync
/scp
как корень, Вы столкнетесь с проблемой.
Я должен отключать все пароли и использовать ключи только, период? Что относительно
PasswordAuthentication
иChallengeResponseAuthentication
?
Если можно придерживаться этой политики, то, конечно, ключи использования только и отключают обоих.