root  / my Debian tips&tricks  / ssh по ключам 

Official Debian logo

Иногда возникает необходимость беспарольного доступа по ssh (через ключи). Чтобы это реализовать нужно:
  1. Делаем:
    nano /etc/ssh/sshd_config
    Ищем
    Protocol 2,1
    и меняем на
    Protocol 2
  2. Чтобы пускать только определённых пользователей, в тот же /etc/ssh/sshd_config дописываем:
    AllowUsers user1 user2@host
    Здесь user1 будет разрешён с любого хоста, а user2 только с хоста host. Все остальные будут получать приглашение о пароле, но, естественно, залогиниться не смогут.
  3. Теперь на машине-источнике генерируем ключик rsa:
    admhome@note-admhome:~/.ssh$ ssh-keygen -t rsa
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/admhome/.ssh/id_rsa): 
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /home/admhome/.ssh/id_rsa.
    Your public key has been saved in /home/admhome/.ssh/id_rsa.pub.
    The key fingerprint is:
    26:9b:85:da:b3:4a:51:2f:d0:cb:e5:3d:68:61:b3:11 admhome@note-admhome
    The key's randomart image is:
    +--[ RSA 2048]----+
    |        E        |
    |     .   .       |
    |    . o *        |
    |     + B B       |
    |    . * S o      |
    |     + O   .     |
    |    o =          |
    |   .   o         |
    |    ...          |
    +-----------------+
    Загрузим ключ на удалённую машину (я использовал роутер и нестандартный порт)
    admhome@note-admhome:~/.ssh$ scp -P 8022 id_rsa.pub root@192.168.1.1:~/
    DD-WRT v24-sp2 mega (c) 2010 NewMedia-NET GmbH
    Release: 08/07/10 (SVN revision: 14896)
    root@192.168.1.1's password: 
    id_rsa.pub                                                                                 100%  402     0.4KB/s   00:00    
    admhome@note-admhome:~/.ssh$
  4. Заходим на удалённую машину с помощью ssh
    admhome@note-admhome:~/.ssh$ ssh root@192.168.1.1 -p 8022
    DD-WRT v24-sp2 mega (c) 2010 NewMedia-NET GmbH
    Release: 08/07/10 (SVN revision: 14896)
    root@192.168.1.1's password: 
    root@gw-admhome:~#
    и выполняем ряд нехитрых действий:
    root@gw-admhome:~# cd ~      
    root@gw-admhome:~# mkdir .ssh
    root@gw-admhome:~# cat id_rsa.pub >> .ssh/authorized_keys
    root@gw-admhome:~# chmod go-rwXx .ssh/authorized_keys 
    root@gw-admhome:~# rm id_rsa.pub 
    
    или же воспользуемся командой:
    admhome@note-admhome:~$ ssh-copy-id 
    Usage: /usr/bin/ssh-copy-id [-i [identity_file]] [user@]machine
    
    обратите внимание, что команда используется на машине, чей ключ необходимо добавить на удалённый сервер!
Done :)
LJ