Како да користите SSH за да се поврзете со далечински сервер


Вовед

Една суштинска алатка за совладување како системски администратор е SSH.

SSH, или Secure Shell, е протокол што се користи за безбедно најавување на оддалечените системи. Тоа е најчестиот начин за пристап до далечински сервери Линукс.

Во ова упатство, ќе разговараме за тоа како да користите SSH за да се поврзете со далечински систем.

Основна синтакса

За да се поврземе со далечински систем користејќи SSH, ќе ја користиме командата ssh.

Ако користите Windows, ќе треба да инсталирате верзија на OpenSSH за да можете да ssh од терминал. Ако претпочитате да работите во PowerShell, можете да го следите Git за Windows, кој обезбедува домашна Windows bash терминална средина што ја вклучува командата ssh. Секој од нив е добро поддржан и кое и да одлучите да го користите ќе се сведе на предност.

Ако користите Mac или Linux, веќе ќе ја имате командата ssh достапна во вашиот терминал.

Наједноставната форма на командата е:

  1. ssh remote_host

remote_host во овој пример е IP адресата или името на доменот со кои се обидувате да се поврзете.

Оваа команда претпоставува дека вашето корисничко име на далечинскиот систем е исто како и вашето корисничко име на вашиот локален систем.

Ако вашето корисничко име е различно на далечинскиот систем, можете да го наведете со користење на оваа синтакса:

  1. ssh remote_username@remote_host

Откако ќе се поврзете на серверот, може да биде побарано да го потврдите вашиот идентитет со давање лозинка. Подоцна, ќе опфатиме како да генерирате клучеви за користење наместо лозинки.

За да излезете од сесијата ssh и да се вратите на вашата локална сесија на школка, напишете:

  1. exit

Како функционира SSH?

SSH работи со поврзување на клиентска програма со ssh сервер, наречен sshd.

Во претходниот дел, ssh беше клиентската програма. ssh серверот веќе работеше на remote_host што го наведовме.

Речиси на сите околини на Linux, серверот sshd треба да започне автоматски. Ако не работи поради која било причина, можеби ќе треба привремено да пристапите до вашиот сервер преку веб-базирана конзола или локална сериска конзола.

Процесот потребен за стартување на ssh сервер зависи од дистрибуцијата на Linux што ја користите.

На Ubuntu, можете да го стартувате ssh-серверот со пишување:

  1. sudo systemctl start ssh

Тоа треба да го стартува серверот sshd и потоа можете да се најавите од далечина.

Како да конфигурирате SSH

Кога ја менувате конфигурацијата на SSH, ги менувате поставките на серверот sshd.

Во Ubuntu, главната конфигурациска датотека sshd се наоѓа на /etc/ssh/sshd_config.

Направете резервна копија од тековната верзија на оваа датотека пред да ја уредите:

  1. sudo cp /etc/ssh/sshd_config{,.bak}

Отворете го користејќи nano или вашиот омилен уредувач на текст:

  1. sudo nano /etc/ssh/sshd_config

Ќе сакате да ги оставите повеќето од опциите во оваа датотека сами. Сепак, има неколку што можеби ќе сакате да ги погледнете:

Port 22

Декларацијата за портот одредува која порта ќе ја слуша sshd-серверот за конекции. Стандардно, ова е 22. Веројатно треба да ја оставите оваа поставка на мира, освен ако немате конкретни причини да направите поинаку. Ако да ја промените вашата порта, подоцна ќе ви покажеме како да се поврзете со новата порта.

HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key

Декларациите на клучевите на домаќинот одредуваат каде да се бараат глобалните клучеви за домаќини. Подоцна ќе разговараме за тоа што е клучот на домаќинот.

SyslogFacility AUTH
LogLevel INFO

Овие две ставки укажуваат на нивото на сеча што треба да се случи.

Ако имате потешкотии со SSH, зголемувањето на количината на логирање може да биде добар начин да откриете што е проблемот.

LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

Овие параметри одредуваат некои од информациите за најавување.

LoginGraceTime одредува колку секунди да се одржи врската жива без успешно да се најавите.

Можеби е добра идеја да го поставите ова време само малку повисоко од времето што ви е потребно за нормално најавување.

PermitRootLogin избира дали на root корисникот му е дозволено да се најави.

Во повеќето случаи, ова треба да се смени во no кога сте создале корисничка сметка која има пристап до зголемени привилегии (преку su или sudo) и може да се најави преку ssh, со цел да се минимизира ризикот некој да добие root пристап до вашиот сервер.

strictModes е безбедносна заштита која ќе одбие обид за најавување доколку датотеките за автентикација се читливи за сите.

Ова ги спречува обидите за најавување кога конфигурациските датотеки не се безбедни.

X11Forwarding yes
X11DisplayOffset 10

Овие параметри ја конфигурираат способноста наречена X11 Forwarding. Ова ви овозможува да го видите графичкиот кориснички интерфејс (GUI) на далечинскиот систем на локалниот систем.

Оваа опција мора да биде овозможена на серверот и дадена кај клиентот SSH за време на поврзувањето со опцијата -X.

Откако ќе ги направите промените, зачувајте ја и затворете ја датотеката. Ако користите nano, притиснете Ctrl+X, потоа кога ќе биде побарано, Y и потоа Enter.

Ако сте смениле какви било поставки во /etc/ssh/sshd_config, погрижете се повторно да го вчитате вашиот sshd-сервер за да ги имплементирате вашите модификации:

  1. sudo systemctl reload ssh

Треба темелно да ги тестирате вашите промени за да се уверите дека тие функционираат на начинот на кој очекувате.

Можеби е добра идеја да имате отворени неколку терминални сесии додека правите промени. Ова ќе ви овозможи да ја вратите конфигурацијата доколку е потребно без да се заклучите.

Како да се најавите на SSH со клучеви

Иако е корисно да можете да се најавите на далечински систем користејќи лозинки, побрзо и побезбедно е да поставите автентикација базирана на клучеви.

Како функционира автентикацијата базирана на клучеви?

Автентикацијата базирана на клуч работи со создавање пар клучеви: приватен клуч и јавен клуч.

приватниот клуч се наоѓа на машината на клиентот и е обезбеден и се чува во тајност.

јавниот клуч може да се даде на секого или да се стави на кој било сервер до кој сакате да пристапите.

Кога ќе се обидете да се поврзете со помош на пар-клучеви, серверот ќе го користи јавниот клуч за да создаде порака за клиентскиот компјутер што може да се чита само со приватниот клуч.

Клиентскиот компјутер потоа го испраќа соодветниот одговор назад до серверот и серверот ќе знае дека клиентот е легитимен.

Овој процес се изведува автоматски откако ќе ги конфигурирате клучевите.

Како да креирате SSH клучеви

SSH клучевите треба да се генерираат на компјутерот од кој сакате да се најавите од. Ова е обично вашата локална машина.

Внесете го следново во командната линија:

  1. ssh-keygen -t rsa

Можеби ќе ви биде побарано да поставите лозинка на самите датотеки со клучеви, но ова е прилично невообичаена практика и треба да притиснете Enter преку промптите за да ги прифатите стандардните. Вашите клучеви ќе се креираат на ~/.ssh/id_rsa.pub и ~/.ssh/id_rsa.

Променете во директориумот .ssh со внесување:

  1. cd ~/.ssh

Погледнете ги дозволите на датотеките:

  1. ls -l
Output
-rw-r--r-- 1 demo demo 807 Sep 9 22:15 authorized_keys -rw------- 1 demo demo 1679 Sep 9 23:13 id_rsa -rw-r--r-- 1 demo demo 396 Sep 9 23:13 id_rsa.pub

Како што можете да видите, датотеката id_rsa може да се чита и да се запишува само на сопственикот. Ова помага да се чува во тајност.

Меѓутоа, датотеката id_rsa.pub може да се споделува и има дозволи соодветни за оваа активност.

Како да го префрлите вашиот јавен клуч на серверот

Ако моментално имате пристап до сервер базиран на лозинка, можете да го копирате вашиот јавен клуч на него со издавање на оваа команда:

  1. ssh-copy-id remote_host

Ова ќе започне SSH сесија. Откако ќе ја внесете лозинката, тој ќе го копира вашиот јавен клуч во датотеката со овластени клучеви на серверот, што ќе ви овозможи следниот пат да се најавите без лозинка.

Опции од страна на клиентот

Постојат голем број на опционални знаменца што можете да ги обезбедите кога се поврзувате преку SSH.

Некои од нив можеби се неопходни за да се совпаднат со поставките во конфигурацијата sshd на оддалечениот домаќин.

На пример, ако сте го промениле бројот на портата во вашата конфигурација sshd, ќе треба да се совпадне со таа порта на клиентската страна со внесување:

  1. ssh -p port_number remote_host

Забелешка: Промената на вашата ssh порта е разумен начин за обезбедување безбедност преку нејасност. Ако дозволувате ssh конекции со широко познат сервер распоредување на портата 22 како вообичаено, и имате овозможено автентикација со лозинка, најверојатно ќе бидете нападнати од многу автоматизирани обиди за најавување. Исклучиво користењето автентикација базирана на клучеви и извршувањето на ssh на нестандардна порта не е најкомплексното безбедносно решение што можете да го примените, но треба да ги намалите на минимум.

Ако сакате да извршите само една команда на оддалечен систем, можете да ја наведете по домаќинот вака:

  1. ssh remote_host command_to_run

Ќе се поврзете со оддалечената машина, ќе извршите автентикација и командата ќе се изврши.

Како што рековме претходно, ако препраќањето X11 е овозможено на двата компјутера, можете да пристапите до таа функционалност со внесување:

  1. ssh -X remote_host

Под услов да ги имате соодветните алатки на вашиот компјутер, GUI програмите што ги користите на далечинскиот систем сега ќе го отворат својот прозорец на вашиот локален систем.

Оневозможување на автентикација со лозинка

Ако сте создале SSH клучеви, можете да ја подобрите безбедноста на вашиот сервер со оневозможување на автентикација само со лозинка. Освен конзолата, единствениот начин да се најавите на вашиот сервер ќе биде преку приватниот клуч што се спарува со јавниот клуч што сте го инсталирале на серверот.

Предупредување: Пред да продолжите со овој чекор, проверете дали сте инсталирале јавен клуч на вашиот сервер. Во спротивно, ќе бидете затворени!

Како root или корисник со sudo привилегии, отворете ја конфигурациската датотека sshd:

  1. sudo nano /etc/ssh/sshd_config

Лоцирајте ја линијата што гласи Автентикација на лозинка и отстранете ја од коментарот со отстранување на водечката #. Потоа можете да ја промените неговата вредност во no:

PasswordAuthentication no

Уште две поставки кои не треба да се менуваат (под услов да не сте ја измениле оваа датотека претходно) се PubkeyAuthentication и ChallengeResponseAuthentication. Тие се стандардно поставени и треба да читаат на следниов начин:

PubkeyAuthentication yes
ChallengeResponseAuthentication no

Откако ќе ги направите промените, зачувајте ја и затворете ја датотеката.

Сега можете повторно да го вчитате демонот SSH:

  1. sudo systemctl reload ssh

Автентикацијата со лозинка сега треба да биде оневозможена, а вашиот сервер треба да биде достапен само преку автентикација со SSH клуч.

Заклучок

Учењето на вашиот начин околу SSH во голема мера ќе има корист од било кој од вашите идни напори за компјутерски облак. Додека ги користите различните опции, ќе откриете понапредна функционалност што може да ви го олесни животот. SSH остана популарен бидејќи е безбеден, лесен и корисен во различни ситуации.

Следно, можеби ќе сакате да научите како да работите со SFTP за да извршите пренос на датотеки со командна линија.