Это старая версия документа!
Содержание
ssh. Генерация и установка ключа
SSH может авторизоваться не по паролю, а по ключу. Ключ состоит из открытой и закрытой части. Открытая кладётся в домашний каталог пользователя, «которым» заходят на сервер, закрытая — в домашний каталог пользователя, который идёт на удалённый сервер. Половинки сравниваются (утрированно) и если всё ок — пускают. Важно: авторизуется не только клиент на сервере, но и сервер по отношению к клиенту (то есть у сервера есть свой собственный ключ). Главной особенностью ключа по сравнению с паролем является то, что его нельзя «украсть», взломав сервер — ключ не передаётся с клиента на сервер, а во время авторизации клиент доказывает серверу, что владеет ключом (та самая криптографическая магия).
Управление ключами
Генерация ключа
- Генерация ключа:
ssh-keygen -t rsa
Вывод команды:
Generating public/private rsa key pair. Enter file in which to save the key (/home/user/.ssh/id_rsa):
Нажать на ENTER
Ввод пароля (если хотите входить без пароля, то нажать ENTER)
Enter passphrase (empty for no passphrase):
Ввести пароль еще раз (если без пароля то нажать ENTER)
Enter same passphrase again:
Общий вывод команды:
pavel@debian:~$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/pavel/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/pavel/.ssh/id_rsa. Your public key has been saved in /home/pavel/.ssh/id_rsa.pub. The key fingerprint is: c1:70:c3:6f:92:62:94:f7:e4:c2:da:c2:61:0c:af:db pavel@debian The key's randomart image is: +--[ RSA 2048]----+ | .+o | | . ++o. | | * ++o | | X =.o | | B =So | | o ++ | | o | | . E | | | +-----------------+
- Смена существующего пароля:
ssh-keygen -p
Структура ключа
~/.ssh/id_rsa.pub — открытый ключ. Его копируют на сервера, куда нужно получить доступ.
~/.ssh/id_rsa — закрытый ключ. Его нельзя никому показывать. Если вы в письмо/чат скопипастите его вместо pub, то нужно генерировать новый ключ.
Установка ключа на сервер
- При помощи утилиты ssh-copy-id :
ssh-copy-id user@192.168.0.100
user - имя пользователя 192.168.0.100 - адрес сервера
Если у вас ssh на нестандартном порту, то ssh-copy-id требует особого ухищрения при работе:
ssh-copy-id '-p 2200 user@192.168.0.100'
- Добавление ключа вручную
Необходимо в домашнем каталоге пользователя, под которым будет происходить авторизация, создать файл
~/.ssh/authorized_keys
и скопировать в него содержимое файла открытого ключа, хранящегося на вашем компьютере.
Обратите внимание, права на файл не должны давать возможность писать в этот файл посторонним пользователям, иначе ssh его не примет.
В ключе последнее поле — user@machine. Оно не имеет никакого отношения к авторизации и служит только для удобства определения где чей ключ. Заметим, это поле может быть поменяно (или даже удалено) без нарушения структуры ключа.
Старые руководства по ssh упоминают про authorized_keys2. Причина: была первая версия ssh, потом стала вторая (текущая), для неё сделали свой набор конфигов, всех это очень утомило, и вторая версия уже давным давно переключилась на версии без всяких «2». То есть всегда authorized_keys и не думать о разных версиях.
Теперь для входя на сервер можно воспользоваться командой:
ssh 'user@192.168.0.100'