Fingerprint
Fingerprint SSH-ключа - это уникальный идентификатор для проверки подлинности ключа при подключении к удаленному серверу по протоколу SSH. Он вычисляется как хэш-сумма открытого ключа и сохраняется в локальном кэше клиентского приложения.
При подключении к серверу по SSH, клиент проверяет fingerprint открытого ключа сервера с сохраненным в локальном кэше. Если fingerprint не совпадает, это может свидетельствовать о возможной атаке MITM.
Fingerprint SSH-ключа защищает от атак MITM и позволяет проверить подлинность ключа сервера. Важно хранить fingerprint ключа в безопасном месте и не доверять подключениям с неизвестными fingerprint-ами.
Посмотреть известные отпечатки можно в файле
~/.ssh/known_hosts
Подключение по ssh ключам
Если нет ключа - создай:
Неинтерактивное создание ssh ключа без passphrase
Закинуть (🤙) public key на сервер можно с помощью ssh-copy-id
:
Публичный ключ сохранится на сервере в файле ~/.ssh/authorized_keys
.
Можно и самому содержимое id_rsa.pub
вставить в ~/.ssh/authorized_keys
- та же самая операция, по сути.
Теперь надо отключить авторизацию по паролю на сервере:
И sudo systemctl restart sshd
.
Про UsePAM
PAM (Pluggable Authentication Modules) является модульной системой аутентификации, которая позволяет использовать различные методы аутентификации. Если параметр
UsePAM
установлен вyes
, OpenSSH сервер будет использовать PAM для проверки учетных данных пользователей. Если параметрUsePAM
установлен вno
, OpenSSH сервер будет использовать встроенную систему аутентификации.
ПараметрUsePAM
может быть полезен, если нужно настроить доп. функции аутентификации, которые не поддерживаются встроенной системой аутентификации OpenSSH, например, 2FA, проверку наличия пользователя в определенной группе и т.д. Но использование PAM может увеличить нагрузку на сервер и ухудшить производительность, поэтому рекомендуется отключать его.
Несоответствие отпечатков
После этого может вылезти предупреждение о том, что fingerprint SSH ключа сервера не соответствует fingerprint-у, который был сохранен в файле known_hosts на нашем пк. Там же ssh предложит выполнить команду, которая всё исправит, удалив старый отпечаток.
По типу такого
И под конец можно еще добавить приватный ключ в ssh-agent, чтобы он не спрашивал каждый раз passphrase, и если у тебя ssh ключей много для разных целей, то это как раз и поможет ssh-agent-у понять - какой ключ использовать для подключения к серверу, и не будет просить указать нужный ключ:
Посмотреть добавленные ключи можно так:
Но ssh-agent работает только во время сессии - если ребутнуть пк, то придется заново вводить всё. Есть разные способы решить это 🥱🥱…
Запуск локальных скриптов по ssh
Daaamn
Вывод скрипта возвращается в локальную систему (которую можно перенаправить).