Как да създадем SSH ключове?

Услугата SSH поддържа различни методи за аутентикация, като най-популярните от тях са аутентикация с парола и аутентикация с ключ. Ключът се счита за по-сигурен, докато акаунта може да бъде достъпен само от един компютър, където е зареден частния SSH ключ. Би било много трудно за някой да кракне SSH ключовете, защото те са силно криптирани. В този урок ще преминем през стъпките, необходими за настройка на ключа за удостоверяване на SSH на вашите CentOS 6.4, Debian или платформата Ubunto.

Изисквания:
CentOS 6.4, Debian или Ubuntu, инсталирани на вашия компютър/сървър
SSH достъп (Command line достъп до сървъра)
root privileges
Основни умения за работа с Linux

Генериране на двойка SSH ключове
Инструкциите, които показваме са с примерен потребител, който ще наречем user1. Преди генерирането на ключовете, се уверете, че съществува папка, наречена .ssh в началната папка на акаунта и права 700:

mkdir /home/user1/.ssh && chmod 700 /home/user1/.ssh && cd /home/user1/.ssh

След като влезете в папката, ще можете да генерирате новата двойка ключове:

ssh-keygen -t rsa

Генериране на публични/частни rsa двойка ключове

Въведете файл, в който да съхраните ключа (/home/user1/.ssh/id_rsa):

Въведете парола (празно за без парола):

Въведете паролата отново:

Вашата идентификация е записана в /home/user1/.ssh/id_rsa.

Вашият публичен ключ е записан в /home/user1/.ssh/id_rsa.pub.

Отпечатъка на ключа е:

c6:82:a5:04:a9:20:a8:86:8a:0b:a6:9f:c1:cf:35:05 user1@localhost

The key's randomart image is:
+--[ RSA 2048]----+
|. .. |
|+ .. |
|=. . E |

|+. . + o |

|+ o . S |

|+o + |
|+.o o |

|o = . . |

| .o o |

+-----------------+
Вие ще трябва да зададете име на файл, в който частния SSH ключ ще бъде запаметен и ще трябва да въведете парола за ключа. Може да зададете специфично име на файла или да натиснете Enter и да оставите името по подразбиране id_rsa. Публичния SSH ключ ще бъде записан със същото име като на частния SSH ключ, но с разширението .pub . Можете да зададете специфична парола за ключа, която ще бъде поискана по-късно или просто натиснете Enter и оставете полето празно.

Оторизация на публичния SSH ключ
Веднъж след като е зададен, можете да разрешите използването на ключовата двойка SSH чрез добавяне на публичния SSH ключ във файл, наречен authorized_keys, разположен в в .ssh/ folder:

cat /home/user1/.ssh/idrsa.pub >> /home/user1/authorizedkeys && chmod 600 /home/user1/authorized_keys

Конфигуриране на услугата sshd
Да приемем, че оторизацията на SSH паролата e включена и искате да я превключите на key based one. За да направите това, ще трябва да редактирате конфигурационния SSH файл като root.

sudo nano /etc/ssh/sshd_config

Port 22

Protocol 2

SyslogFacility AUTH

PermitRootLogin yes

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

PasswordAuthentication no

ChallengeResponseAuthentication no

GSSAPIAuthentication yes

GSSAPICleanupCredentials yes

UsePAM yes

AcceptEnv LANG LCCTYPE LCNUMERIC LCTIME LCCOLLATE LCMONETARY LCMESSAGES AcceptEnv LCPAPER LCNAME LCADDRESS LCTELEPHONE LC_MEASUREMENT

AcceptEnv LCIDENTIFICATION LCALL LANGUAGE

AcceptEnv XMODIFIERS

X11Forwarding yes

С горепосочените опции деактивираме удостоверяването на SSH парола и активираме основния ключ.

Ето и кратко обяснение на опциите:

Port – порт, използван от услугата SSHD

Protocol – уточнява протоколните версии на SSHD поддръжки. Възможните стойности са 1 и 2

SyslogFacility – дава кода за улеснение, който се използва, когато влезете в съобщения, използвайки SSHD

PermitRootLogin – уточнява дали потребителя може да се логне с root достъп до SSH

PubkeyAuthentication – уточнява дали удостоверяването на публичен ключ е позволено

AuthorizedKeysFile – уточнява файл, който съдържа публичните ключове, които могат да бъдат използвани за удостоверяване на потребителя

PasswordAuthentication – уточнява дали удостоверяването на парола е позволено

ChallengeResponseAuthentication – уточнява дали challenge response удостоверяване е позволено

GSSAPIAuthentication – уточнява дали е разрешено удостоверяване на потребителя въз основа на GSSAPI

GSSAPICleanupCredentials – определя дали автоматично да унищожи пълномощията на потребителя да се кешират при излизане

UsePAM - позволява интерфейс Pluggable Authentication Module

AcceptEnv - уточнява каква среда променливи, изпратени от клиента ще бъдат копирани в средата на сесията.

X11Forwarding yes – тази настройка разрешава стартиране на графична среда в ssh сесията.

Когато сте готови, запаметете конфигурационния файл и рестартирайте sshd услугата.

sudo /etc/inid.d/sshd restart

*sudo – се използва само когато не сте се свързали под SSH с root потребителя

Ако PasswordAuthentication е настроен на NO, трябва да помислите за генериране на SSH двойка ключове за root потребителя, или в противен случай няма да можете да получите достъп до сървъра, използвайки SSH парола за удостоверяване.

Тествайте конфигурацията
Заредете частния SSH ключ на своя локален компютър:

ssh-add id_rsa

Ще трябва да въведете паролата за частен ключ.
След това може да опитате да получите достъп до профила на user1 чрез:

ssh user1@X.X.X.X

*където X.X.X.X е IP адреса на сървъра. Един лесен начин да намерите IP адреса на сървъра е да изпълните следната команда:

ip addr show eth0|grep inet|awk '{print $2}'|cut -d / -f1

Като алтернатива може да запишете частния ключ във файл, с различно име (например sshprivatekey.txt) и да го заредите, като използвате командата SSH:

ssh -i sshprivatekey.txt user1@X.X.X.X

Етикети: #konfiguratsiya-na-uslugite #publichen-klyuch #root-privileges #ssh-klyuchove #generirane-na-dvojka-ssh-klyuchove #chasten-klyuch #ssh-access #debian #centos #ubuntu #ssh