Показахме ви как да използвате SSH, за да прехвърляте файлове по сигурен начин. Но има сериозен проблем със стандартното поведение на SSH. Вие сте свързани само с отдалечената машина, след като сте въвели ръчно паролата, която я изключва за всички задачи, които искате да работите без надзор. Или това?

Ето едно бързо намаляване на това, как OpenSSH CLI инструменти (scp и sftp) работят, за да можете по-добре да оцените този проблем. Когато искате да копирате файлове до или от отдалечения хост, можете да използвате scp, който автоматично инициира SSH връзка към отдалечения хост. Всеки път, когато стартирате SCP команда, тя установява нова връзка с устройството за дистанционно управление. Така че, ако имате няколко SCP команди, ще въведете една и съща парола няколко пъти.

Ето защо не бихте искали да използвате scp в скриптове, които искате да стартирате без надзор. Съществува и фактът, че ако имате няколко профила на няколко машини в мрежата, ще имате проблеми при запаметяването на уникални, силни пароли за всяка от тях.

За да преодолеете този проблем, трябва да превключите по подразбиране механизма за удостоверяване на OpenSSH на система, базирана на ключове.

Ключът към успеха

По подразбиране OpenSSH използва само клавиши, за да удостовери самоличността на сървъра, когато клиентът срещне нова отдалечена машина:

 $ ssh [email protected] Не може да се установи автентичността на хост 'atlantis.remote.com (atlantis.remote.com)'. Ключовият отпечатък на ECDSA е da: e8: a2: 77: f4: e5: 10: 56: 6d: d4: d2: dc: 15: 8e: 91: 22. Наистина ли искате да продължите да се свързвате (да / не)? 

Когато отговорите, като напишете "да", отдалеченият хост се добавя към списъка на познатите хостове. Така че освен сървъра, който удостоверява клиента, като иска парола, клиентът също така удостоверява сървъра с помощта на ключ.

По същия начин и вие можете да получите набор от ключове, за да докажете самоличността си. OpenSSH използва двойка ключове, за да докаже вашата самоличност и да създаде сигурна връзка с отдалечен сървър. Частният ключ е само за вашите очи и се използва от вашия OpenSSH клиент, за да докаже вашата самоличност на сървъри. След това има публичен ключ, който трябва да държите под всичките си профили на всички отдалечени машини, към които искате да влезе SSH.

За да създадете ключ, клиентът въведете:

 $ ssh-keygen Генериране на публична / частна двойка ключове rsa. Въведете файла, в който да запазите ключа (/home/bodhi/.ssh/id_rsa): Въведете фраза (празна без пропуск): Въведете отново същия пропуск: Вашата идентификация е запазена в /home/bodhi/.ssh/id_rsa. Вашият публичен ключ е запазен в /home/bodhi/.ssh/id_rsa.pub. 

Не забравяйте да не оставяте паролата празна и да забележите мястото, където се съхраняват ключовете. Файлът "id_rsa" може да се чете само от вашия акаунт и съдържанието му е шифровано с паролата, която сте предоставили по време на генерирането.

Следващата стъпка е да копирате публичния ключ на отдалечения сървър. Ако приемем, че искате да влезете в "admin" на отдалечената машина, наречена "atlantis.remote.com", можете да преместите клавишите с една команда:

 $ ssh-copy-id -i ~ / .ssh / id_rsa.pub [email protected] [email protected] парола: 

След като предоставите паролата за частния си ключ, публичният ключ ще бъде автоматично поставен на правилното място на отдалечения сървър, който по подразбиране е файлът "~ / .ssh / authorized_keys".

Когато вече влезете в отдалеченото устройство, ще бъдете подканени за пропуск. Единственото предимство на използването на ключове е, че вместо да ви удостоверяваме с парола, която се предава нешифрована, отдалеченият сървър и вашият клиент установяват самоличността ви въз основа на ключовете.

Също така можете да използвате ssh в няколко отдалечени кутии, като използвате една и съща пропуск, докато тези отдалечени машини имат вашият публичен ключ. Така че не е нужно да запомните няколко парола.

Но все още не можете да стартирате скриптове, без да бъдете прекъснати за пароли.

Свързани : Как да активирате удостоверяване с две фактори за SSH връзка

SSH-агент за спасяване

OpenSSH обединява инструмент, наречен ssh-agent, който държи частните ви ключове в паметта. След като агентът тича, вместо да ви подканя за пропуск, клиентите на SSH ще взаимодействат с агента.

Можете да стартирате агента с " ssh-agent /bin/bash ", ако приемете, че използвате shell shell.

Всички команди, които изискват достъп до вашите OpenSSH частни ключове, ще бъдат задържани и отговаряни от агента.

Когато агентът работи, трябва да го оборудвате с клавишите си. Това се извършва чрез извикване на програмата "ssh-add", която по подразбиране зарежда ключовете от файла за самоличност по подразбиране (~ / .ssh / id_rsa).

 $ ssh-add Въведете пропуск за /home/bodhi/.ssh/id_rsa: Добавена е идентификация: /home/bodhi/.ssh/id_rsa (/home/bodhi/.ssh/id_rsa) 

Сега, когато влезете в отдалечения компютър с " ssh [email protected] ", ще ви бъде разрешено без да въвеждате пропуск!

Също така, scp и sftp също ще могат да се свързват с отдалечените хостове, без да ви питат за пропуск. Така че сега можете да планирате и стартирате скриптове, които манипулират файлове на отдалечено устройство автоматично.

Също така, сега, когато използвате клавиши, е добре да деактивирате удостоверяването чрез пароли. За да направите това, редактирайте конфигурационния файл на отдалечения сървър (/etc/ssh/.sshd_config) и променете параметъра " PasswordAuthentication " от "да" на "не". Отсега нататък, ако някой се опита да се свърже с вашата SSH услуга и няма публичен ключ на сървъра, ще му бъде отказан достъп, без дори да вижда прозореца за влизане.

Изображение на кредита: Карунакар Райкър