drBatty пишет:myr4ik07, правило №1
никаких ключей в каталогах в /etc/ прописано быть НЕ должно. Все ключи пишутся у юзеров
Правило №2
Пара публичный/секретный ключ создаётся НА клиенте (там, ОТКУДА входите).
Правило №3
Секретный ключ НИКОГДА не покидает своего места. Обычно он лежит в $HOME/.ssh/
(публичный имеет то же самое имя, но расширение .pub)
Правило №4
Надо переносить ключ от клиента, к серверу. В домашний каталог КУДА вы входите, в конец файла $HOME/.ssh/authorized_keys
myr4ik07 пишет:Да, инструкций много, и вполне понятные инструкции, но все же.
Хочу я по ssh удаленно управлять компьютером.
управляйте. Вышеотквочена инструкция. Какой пункт вам непонятен?
Да, первым делом усвойте терминологию:
Сервер - компьютер, который ждёт внешних сигналов.
Клиент - компьютер, который передаёт эти сигналы серверу.
Первым делом поправьте конфиг сервера так, что-бы там
1. не было никаких ссылок на ключи.
2. полный запрет на вход root'а
3. вход сначала по публичному ключу, потом по паролю.
Теперь попытайтесь войти с сервера на сервер (ага, тут сервер работает и как сервер, и одновременно работает другая программа - клиент)
Консоль:
$ ssh localhost
Если вы уже создали пару ключей - войдёте без пароля, только с предупреждением о том, что вы входите на неизвестный сервер. Вам покажут отпечатки пальцев и IP. Отпечатки нужны для того, что враг может подделать сервер и его IP, и клиент придёт не туда. Ну в данном случае IP 127.0.0.1, это вы и есть.
Если вы ещё не создали ключи - попробуйте войти по паролю. Должно получится. Вообще говоря, если вы таки вошли без пароля, то вы ошиблись. Сотрите каталог ~/.ssh на сервере, что-бы не путаться.
ОК, теперь вы можете на сервере войти на сервер, причём только юзером, и только по паролю.
Теперь идите на клиент, и входите оттуда.
Консоль:
$ ssh server_user@server_ip
вы должны войти по паролю. Если вы не вошли, значит ssh закрыт каким-то фильтром. Вам оно виднее.
Далее, выходите с сервера, и если у вас есть каталог ~/.ssh - его стираете, что-бы не путаться. (ну или куда-нить переносите/переименовываете)
Теперь создаёте каталог ~/.ssh, заходите туда, и устанавливаете права
Консоль:
$ mkdir ~/.ssh
$ cd ~/.ssh
$ chmod 0700 .
Затем создаёте пару ключей
$ ssh-keygen -f key
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in key.
Your public key has been saved in key.pub.
The key fingerprint is:
e4:46:89:a5:7e:2b:31:53:a5:a7:b0:cc:35:a6:e9:db doc@dt
The key's randomart image is:
+--[ RSA 2048]----+
| . . |
| + + |
| + X . |
| + % + |
| @ S |
| . * . |
| o . |
| + |
| . E |
+-----------------+
спросят passphrase, это пароль для шифрования секретного ключа. Что-бы враг, взломавший клиент, не мог его использовать. Можно просто нажать ENTER, если вы хотите входить без passphrase.
Также покажут отпечаток пальца, в данном случае e4:46:89:a5:7e:2b:31:53:a5:a7:b0:cc:35:a6:e9:db, он нужен что-бы клиент был уверен, что враг не подменил сервер.
Его потом можно проверить:
Консоль:
$ ssh-keygen -l
Enter file in which the key is (/home/doc/.ssh/id_rsa): key.pub
2048 96:94:0a:e6:5a:f5:64:a3:db:aa:2e:99:0b:b8:bb:5d key.pub (RSA)
обратите внимание, что я указал публичный key.pub, а не секретный key. У второго свой отпечаток, который нам обычно не нужен.
Итак, мы создали пару ключей. Теперь переносим ПУБЛИЧНЫЙ (это важно) ключ на сервер.
Если машина доступна, и ходить вам не лениво, то key.pub можно перенести и на флешке (для врага он почти бесполезен, но всё равно его надо будет потом уничтожить с флешки). можно перенести и командой scp, или специальной утилитой
Консоль:
ssh-copy-id
Теперь заходим на сервер, там мы удалили ~/.ssh, и создаём новый, и ставим его права (как на клиенте). Если каталог всё-же есть - проверяем права, и их исправляем. Также проверяем наличие и права файла ~/.ssh/authorized_keys, его права должны быть 0600.
Теперь добавим публичный ключ к ~/.ssh/authorized_keys
Консоль:
$ cat key.pub >> ~/.ssh/authorized_keys
Если файла не существовало, то он создастся, и его права надо поставить в 0600.
Возвращаемся на клиент, и проверяем - теперь входим уже без пароля.
Получаем права рута на сервере
Консоль:
$ su -
и правим конфиг так, что-бы
1. руту было не зайти.
2. вход только по ключу.
перезагружаем sshd. Если мы вошли удалённо, то командой stop мы остановим сервер, нас выкинет, и придётся тащится обратно к серверу. Потому останавливаем и запускаем сервер одной строкой, разделяя команды точкой с запятой (и ИМЕННО ей!)
Теперь проверяем работу с клиента. Если мы на клиенте (удалённо), то лучше не выходить - за ошибку не пустят. Потому откроем её одну консоль, и проверяем оттуда.
PS: все пункты надо выполнять точно и последовательно, но самое главное, необходимо ПОНИМАТЬ, что вы делаете.
Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)