Как вы знаете, преимущество, которое дает вам фраза-пароль, заключается в том, что если кто-то может прочитать ваш закрытый ключ, он «не сможет» его использовать.
Если кто-то может получить доступ к этому закрытому ключу, вы должны принять как должное, что у него есть доступ (ed) / скомпрометирован, независимо от того, какие машины настроены с открытым ключом. Такие вещи, как .bash_history или .ssh / config, только облегчают это, даже если ваш .ssh / known_hosts запутан.
Отсутствие пароля на вашем ключе не конец света, вот 3 идеи, которые помогут вам обезопасить себя немного лучше, несмотря на это. ( Biggie является вторым, прочитайте это, если ничего больше )
Не используйте один и тот же ключ на всех машинах и пользователях. Создайте для каждого пользователя на каждой машине (которая должна делать подобные вещи) свою собственную пару ключей. Это позволит вам держать мелкозернистый контроль над тем, что может ssh, где.
При добавлении ключа в ваш файл author_keys вы можете заблокировать его, чтобы иметь возможность выполнять только определенную команду или использовать его только с определенного хоста.
Смотрите
man ssh
и ищите команду = и из =Синтаксис выглядит примерно так:
from="1.2.3.4",command="/path/to/executable argument" ssh-rsa key name
то есть, всплывающее «rsync» там, и только ключ rsync может быть вызван вашим ключом, и только с IP-адреса 1.2.3.4. Несколько IP-адресов могут быть разделены
,
. Имена хостов также поддерживаются.Еще одна вещь, которая приходит на ум, это директива AllowUser в вашем sshd_config
AllowUsers
За этим ключевым словом может следовать список шаблонов имен пользователей, разделенных пробелами. Если указано, вход в систему разрешен только для имен пользователей, которые соответствуют одному из шаблонов. '*' а также '?' можно использовать в качестве шаблонов в шаблонах. Допустимы только имена пользователей; числовой идентификатор пользователя не распознается. По умолчанию вход разрешен для всех пользователей. Если шаблон принимает форму USER @ HOST, тогда USER и HOST проверяются отдельно, ограничивая вход в систему определенным пользователям с определенных хостов.
Это в основном гарантирует, что пользователь может войти в систему только из определенного места. (хотя он также принимает и подстановочные знаки) Не решит всех ваших проблем, но по крайней мере это усложнит для других.