SSH-ключ — это специальный код, который позволяет удалённому компьютеру понять кто вы есть и какими правами на этом компьютере обладаете.
В обычной жизни мы чаще сталкиваемся с логинами и паролями. Например, чтобы войти в свой профиль во ВКонтакте нужно ввести логин и пароль. Если введённый вами логин и пароль совпадают с теми, что хранятся на серверах ВКонтакте, то соцсеть понимает, что это вы и пускает вас на вашу страничку, разрешая редактировать её и постить котиков. SSH-ключ нужен ровно для этого же, но работает он иначе и ограничен использованием внутри протокола SSH. Протокол SSH нужен в первую очередь для того, чтобы создавать безопасный канал связи с удалённым компьютером, позволяя им управлять, но также может использоваться и для других целей, например передачи файлов.
Как работает SSH-ключ
SSH-ключ разделён на две части. Одна часть называется приватной и должна всегда храниться только на вашем компьютере. Вторая часть ключа называется публичной и эту часть нужно копировать на другие компьютеры. При подключении к удалённому компьютеру он сравнивает публичную часть, которую вы ему дали с приватной частью, которая хранится у вас. Если части ключа совпадают, то вы получаете доступ к удалённому компьютеру (на самом деле всё гораздо сложнее, но принцип работы именно такой). На вашем компьютере может быть создано сколько угодно SSH-ключей. То есть вы можете использовать один SSH-ключ для доступа к сотне компьютеров или для каждого удалённого компьютера создавать отдельный ключ.
Защита SSH ключа
Вы никогда и ни при каких обстоятельствах не должны никому передавать приватную часть своего ключа. Чтобы эту приватную часть нельзя было украсть можно её зашифровать, тогда даже если она попадёт в чужие руки её не смогут использовать. Если вы зашифруете приватную часть SSH-ключа, то каждый раз при его использовании вам нужно будет вводить ключ шифрования, называемый passphrase. Есть общее правило безопасности: если ключ используется не скриптом, а человеком, то он должен быть зашифрован.
Как создать SSH-ключ под Windows
Windows не имеет встроенной поддержки SSH протокола. Поэтому, для создания SSH-ключа нужна специальная программа. Подойдёт Git Bash, которая устанавливается вместе с Git под Windows.
Инструкция по созданию SSH-ключа:
- запустите Git Bash;
- введите команду
ssh-keygen;
- программа предложит выбрать место, куда сохранить ключ. По умолчанию создаётся каталог .ssh в папке текущего пользователя Windows. Например, у меня это C:\Users\Denis\.ssh. Этот вариант подходит, поэтому нажимайте Enter;
- программа запросит passphrase для шифрования ключа. Если просто нажать Enter, то приватная часть ключа не будет зашифрована. Помите, что если SSH-ключ используется не скриптом, то он должен быть зашифрован. Относитесь к passphrase как к паролю, его нужно запомнить;
- после нажатия Enter, программа попросит ввести passphrase повторно. Если вы не шифруете ключ, то ничего не вводите. Следующее нажатие Enter завершит создание ключа.
Теперь в каталоге .ssh созданы два файла:
- id_rsa — приватный ключ (никому не передавать);
- id_rsa.pub — публичный ключ (нужно копировать на другие компьютеры).