Такс, по гиту немного прошлись (но еще вернемся), теперь по ssh ключам. Для многих как оказалось тоже большая проблема. Но это база, поэтому нужно с этим научиться жить. Принять и простить.
Задача — хочу с локальной машины подключиться к серверу по ssh используя ключ.
Смысл тут такой: у тебя есть 2 ключа, один приватный, второй публичный.
Приватный ключ ты хранишь как свою жопу и задом к лесу не поворачиваешься.
Публичный ключ прописываешь на удаленных серверах, к которым тебе нужно подключиться.
В момент подключения к серверу публичная часть ключа «сравнивается» с приватной частью и если все хорошо, то включается зеленый свет.
А если всё хуева… то отправляемся дебажить, как эффективно дебажить расскажу попозже.
Давай тыкать. Генерим RSA ключ на своей машине.
Про форматы ключей rsa/dsa напишу также отдельно, пока делаем rsa.
ssh-keygen -t rsa -b 4096 -N "" -f ~/.ssh/bashdays_rsa
Эта команда сгенерит без лишних вопросов новый ключ и положит его в ~/.ssh/.
Параметр -N указывает что на ключе не будет парольной фразы. Если по безопасности упарываешь, то можешь поставить пароль и ебстись с ним в будущем.
Остальные параметры думаю для тебя очевидны. Тип ключа, битность, куда положить.
Теперь у тебя в папке ~/.ssh/ два ключа bashdays_rsa и bashdays_rsa.pub.
Соответственно первый это приватный (храним его как свою жопу), второй это публичный (шлюха ключ).
Если попал в ситуацию, что публичный ключ проебался, можешь его сделать на основе приватного ключа, делается так:
ssh-keygen -y -f ~/.ssh/bashdays_rsa > ~/.ssh/bashdays_rsa.pub
Дело в шляпе.
Ну а если въебал, сочувствую.
А дальше… а дальше нужно публичную часть ключа прописать на сервер, к которому ты хочешь подключиться.
Делается так:
ssh-copy-id -i ~/.ssh/bashdays_rsa.pub root@server
Если у тебя свежий сервак, то по умолчанию включен вход по паролю, на эту команду оно запросит пароль. Введи разок и ключик залетит на сервер.
Важно! Этой командой мы добавили на удаленный сервер ключ для пользователя root.
То есть подключиться по ключам на сервер ты сможешь только под пользователем root. Если у тебя на удаленном сервере какой-то есть юзер, например: suchka, то и команда будет такой:
ssh-copy-id -i ~/.ssh/bashdays_rsa.pub suchka@server
Тут мы поменяли root на suchka.
Теперь получается я могу используя приватный ключ bashdays_rsa, подключиться к удаленному серверу так:
ssh -i ~/.ssh/bashdays_rsa root@server
ssh -i ~/.ssh/bashdays_rsa suchka@server
То есть под рутом и под сучком. Аналогично добавляешь ключи для других юзеров.
Вообще под рутом не рекомендую ключи какие-то прописывать, делай сразу для юзера и через sudoers наруливай ему права.
Я обычно не пользуюсь ssh-copy-id, а сразу ручусь на сервер под паролем, руками создаю файл /home/user/.ssh/authorized_keys и в него просто копирую содержимое публичного ключа bashdays_rsa.pub.
Но тут есть ряд нюансов. У файла authorized_keys должны быть права 600 или 644. Иначе на сервер не пустят. У меня всегда 600.
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
А еще могут возникнуть проблемы с копипастой, не всегда удается скопировать ключик верно. Поэтому рекомендую сразу привыкать к хорошему и пользоваться ssh-copy-id.
Ну и однострочник на баше для копирования ключа:
cat ~/.ssh/bashdays_rsa.pub | ssh username@server "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"
Вечерком продолжим. Пока мотай на ус.








Комментарии