Configure ssh key

Материал из pNp Wiki
Перейти к: навигация, поиск

Конфигурирование SSH. Создание ключей

Предварительные требования

  • Виртуальная машина с двумя сетевыми интерфейсами
  • Установленные пакеты: bash-completion, openssh-clients, openssh-server

Создание ключей

Для подключения к другому хосту по ключам, необходимо их создать с нужными параметрами:

[andy@vm-02 ~]$ ssh-keygen -v -t rsa -f /home/andy/.ssh/andy -N test0987 -b 4096 -C "andy@example.com"
Generating public/private rsa key pair.
Your identification has been saved in /home/andy/.ssh/andy.
Your public key has been saved in /home/andy/.ssh/andy.pub.
The key fingerprint is:
91:cd:48:0f:da:8c:25:c4:6e:0f:55:8d:6a:cf:6e:5f andy@example.com
The key's randomart image is:
+--[ RSA 4096]----+
|     oo +..o     |
|      .O.B. .    |
|     .o.*.+      |
|      + o.       |
|     . +So       |
|        . o      |
|         .    E  |
|          o  .   |
|         . ..    |
+-----------------+
[andy@vm-02 ~]$ ls -lahi /home/andy/.ssh/
total 8.0K
    15302 drwx------. 2 andy andy   32 Feb 15 05:29 .
101350986 drwx------. 3 andy andy   90 Feb 15 05:28 ..
    15303 -rw-------. 1 andy andy 3.3K Feb 15 05:29 andy
    15304 -rw-r--r--. 1 andy andy  742 Feb 15 05:29 andy.pub
[andy@vm-02 ~]$

В приведенном случае, мы создали ключ зашифрованный алгоритмом RSA, имеющим размер 4096 байт, который называется andy и зашифрован паролем test0987. Теперь, необходимо записать наш ключ на сервер:

[andy@vm-02 ~]$ ssh-copy-id -i /home/andy/.ssh/andy.pub andy@192.168.1.1
The authenticity of host '192.168.1.1 (192.168.1.1)' can't be established.
ECDSA key fingerprint is aa:33:2a:9c:6f:24:cd:d9:b5:2a:d6:81:a8:da:e3:15.
Are you sure you want to continue connecting (yes/no)? yes
/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
andy@192.168.1.1's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'andy@192.168.1.1'"
and check to make sure that only the key(s) you wanted were added.

[andy@vm-02 ~]$

Убедимся, что ключ записан. Для этого на сервер vm-01 проверим содержимое файла .ssh/authorized_keys:

[andy@vm-01 ~]$ cat .ssh/authorized_keys 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDgRs18lamprI9dr+FkfzWpaK0YXuZYj/NAKRX0LfS4k9xiJsQElZ2cHoOrV6MgsGAHZMWwFhbZZUBEQR30l2DbBi1ajxTK0v10TR/Nxpy1d+CPKXn02PfsanIEASfnY4/5l/TUGBTeRM7VNfUrfuXHmVGlLVb+tV9oMJN4nVKtDhuNFYKfn0y3Zfk86GnDpzUYT8eyR982PpUtYtp2KZyeFk9qsku7JerSy78MaJ83YRDS4lr0DsM4K+tkP/RFKsuJ4LAetj+Y7+x0kYAL/9xiaySxbLNiUp92hml/CiP2XNisz8osz9GkkLdr2Gx+WNKwviVXmBEpwxUZGAulmckA0yiC3/CdH90Tl//cyF2YMbuU6nupECTGLdZc43R+d6JsRHFAKTt4+ghkBSfpKyX5nfLTFfWs5CVWAdEWDVCwTruqcd/88sT6wJsFWRWjof6nXpgb9F1FZVeUnalCUVF49U4bHQ7j1VTJdqhTqtLDzwHUECc5PrmF1fdlXwcNMdrps0B88NvnNBOqhB/Dpc9eRFLWLVUjwGWP7Nl9JAmNi+t9AnHqFvPqYidIUV6hHr6kLRieIhb8k+fABUU/hcqmke7wCV67H1EKgPkfWXfML0PdaeGPFCqovXXYkkpIzyUINLzriBm2HT5QUudsyk1oumH52bWsTkgdcCjP0p9RnQ== andy@example.com
[andy@vm-01 ~]$

Однако, при подключении к серверу vm-01, нас будут спрашивать пароль ключа. Для того, что бы не вводить его каждый раз, сделаем следующее:

[andy@vm-02 ~]$ eval `ssh-agent -s`
Agent pid 17909
[andy@vm-02 ~]$ ssh-add /home/andy/.ssh/andy
Enter passphrase for /home/andy/.ssh/andy: 
Identity added: /home/andy/.ssh/andy (/home/andy/.ssh/andy)
[andy@vm-02 ~]$ ssh andy@192.168.1.1
Last login: Fri Feb 23 07:52:51 2018
[andy@vm-01 ~]$ exit
logout
Connection to 192.168.1.1 closed.
[andy@vm-02 ~]$

Указанный метод работает только для одной терминальной сессии. По-умолчанию, при подключении, openssh ищет ключ с названием id_rsa, для того, что бы различать ключи (если имя ключа отличается от имени по-умолчанию, либо ключи уникальны для каждого хоста), необходимо принудительно указать ключ:

[andy@vm-02 ~]$ ssh andy@192.168.1.1 -i /home/andy/.ssh/andy 
Enter passphrase for key '/home/andy/.ssh/andy': 
Last login: Fri Feb 23 08:02:53 2018 from 192.168.1.2
[andy@vm-01 ~]$

Или cоздать файл .ssh/config в домашней директории пользователя, со следующим содержимым:

Host *
 User andy
 IdentityFile ~/.ssh/andy

Затем изменим права у файла .ssh/config и попробуем подключиться:

[andy@vm-02 ~]$ chmod 400 /home/andy/.ssh/config
[andy@vm-02 ~]$ ssh andy@192.168.1.1
Last login: Fri Feb 23 08:07:28 2018 from 192.168.1.2
[andy@vm-01 ~]$

Ссылки

Configuring OpenSSH