Како да користите SSH за да се поврзете со далечински сервер
Вовед
Една суштинска алатка за совладување како системски администратор е SSH.
SSH, или Secure Shell, е протокол што се користи за безбедно најавување на оддалечените системи. Тоа е најчестиот начин за пристап до далечински сервери Линукс.
Во ова упатство, ќе разговараме за тоа како да користите SSH за да се поврзете со далечински систем.
Основна синтакса
За да се поврземе со далечински систем користејќи SSH, ќе ја користиме командата ssh
.
Ако користите Windows, ќе треба да инсталирате верзија на OpenSSH за да можете да ssh
од терминал. Ако претпочитате да работите во PowerShell, можете да го следите Git за Windows, кој обезбедува домашна Windows bash терминална средина што ја вклучува командата ssh
. Секој од нив е добро поддржан и кое и да одлучите да го користите ќе се сведе на предност.
Ако користите Mac или Linux, веќе ќе ја имате командата ssh
достапна во вашиот терминал.
Наједноставната форма на командата е:
- ssh remote_host
remote_host
во овој пример е IP адресата или името на доменот со кои се обидувате да се поврзете.
Оваа команда претпоставува дека вашето корисничко име на далечинскиот систем е исто како и вашето корисничко име на вашиот локален систем.
Ако вашето корисничко име е различно на далечинскиот систем, можете да го наведете со користење на оваа синтакса:
- ssh remote_username@remote_host
Откако ќе се поврзете на серверот, може да биде побарано да го потврдите вашиот идентитет со давање лозинка. Подоцна, ќе опфатиме како да генерирате клучеви за користење наместо лозинки.
За да излезете од сесијата ssh и да се вратите на вашата локална сесија на школка, напишете:
- exit
Како функционира SSH?
SSH работи со поврзување на клиентска програма со ssh сервер, наречен sshd
.
Во претходниот дел, ssh
беше клиентската програма. ssh серверот веќе работеше на remote_host
што го наведовме.
Речиси на сите околини на Linux, серверот sshd
треба да започне автоматски. Ако не работи поради која било причина, можеби ќе треба привремено да пристапите до вашиот сервер преку веб-базирана конзола или локална сериска конзола.
Процесот потребен за стартување на ssh сервер зависи од дистрибуцијата на Linux што ја користите.
На Ubuntu, можете да го стартувате ssh-серверот со пишување:
- sudo systemctl start ssh
Тоа треба да го стартува серверот sshd и потоа можете да се најавите од далечина.
Како да конфигурирате SSH
Кога ја менувате конфигурацијата на SSH, ги менувате поставките на серверот sshd.
Во Ubuntu, главната конфигурациска датотека sshd се наоѓа на /etc/ssh/sshd_config
.
Направете резервна копија од тековната верзија на оваа датотека пред да ја уредите:
- sudo cp /etc/ssh/sshd_config{,.bak}
Отворете го користејќи nano
или вашиот омилен уредувач на текст:
- 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-сервер за да ги имплементирате вашите модификации:
- sudo systemctl reload ssh
Треба темелно да ги тестирате вашите промени за да се уверите дека тие функционираат на начинот на кој очекувате.
Можеби е добра идеја да имате отворени неколку терминални сесии додека правите промени. Ова ќе ви овозможи да ја вратите конфигурацијата доколку е потребно без да се заклучите.
Како да се најавите на SSH со клучеви
Иако е корисно да можете да се најавите на далечински систем користејќи лозинки, побрзо и побезбедно е да поставите автентикација базирана на клучеви.
Како функционира автентикацијата базирана на клучеви?
Автентикацијата базирана на клуч работи со создавање пар клучеви: приватен клуч и јавен клуч.
приватниот клуч се наоѓа на машината на клиентот и е обезбеден и се чува во тајност.
јавниот клуч може да се даде на секого или да се стави на кој било сервер до кој сакате да пристапите.
Кога ќе се обидете да се поврзете со помош на пар-клучеви, серверот ќе го користи јавниот клуч за да создаде порака за клиентскиот компјутер што може да се чита само со приватниот клуч.
Клиентскиот компјутер потоа го испраќа соодветниот одговор назад до серверот и серверот ќе знае дека клиентот е легитимен.
Овој процес се изведува автоматски откако ќе ги конфигурирате клучевите.
Како да креирате SSH клучеви
SSH клучевите треба да се генерираат на компјутерот од кој сакате да се најавите од. Ова е обично вашата локална машина.
Внесете го следново во командната линија:
- ssh-keygen -t rsa
Можеби ќе ви биде побарано да поставите лозинка на самите датотеки со клучеви, но ова е прилично невообичаена практика и треба да притиснете Enter преку промптите за да ги прифатите стандардните. Вашите клучеви ќе се креираат на ~/.ssh/id_rsa.pub и ~/.ssh/id_rsa.
Променете во директориумот .ssh
со внесување:
- cd ~/.ssh
Погледнете ги дозволите на датотеките:
- 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
може да се споделува и има дозволи соодветни за оваа активност.
Како да го префрлите вашиот јавен клуч на серверот
Ако моментално имате пристап до сервер базиран на лозинка, можете да го копирате вашиот јавен клуч на него со издавање на оваа команда:
- ssh-copy-id remote_host
Ова ќе започне SSH сесија. Откако ќе ја внесете лозинката, тој ќе го копира вашиот јавен клуч во датотеката со овластени клучеви на серверот, што ќе ви овозможи следниот пат да се најавите без лозинка.
Опции од страна на клиентот
Постојат голем број на опционални знаменца што можете да ги обезбедите кога се поврзувате преку SSH.
Некои од нив можеби се неопходни за да се совпаднат со поставките во конфигурацијата sshd
на оддалечениот домаќин.
На пример, ако сте го промениле бројот на портата во вашата конфигурација sshd
, ќе треба да се совпадне со таа порта на клиентската страна со внесување:
- ssh -p port_number remote_host
Забелешка: Промената на вашата ssh порта е разумен начин за обезбедување безбедност преку нејасност. Ако дозволувате ssh конекции со широко познат сервер распоредување на портата 22 како вообичаено, и имате овозможено автентикација со лозинка, најверојатно ќе бидете нападнати од многу автоматизирани обиди за најавување. Исклучиво користењето автентикација базирана на клучеви и извршувањето на ssh на нестандардна порта не е најкомплексното безбедносно решение што можете да го примените, но треба да ги намалите на минимум.
Ако сакате да извршите само една команда на оддалечен систем, можете да ја наведете по домаќинот вака:
- ssh remote_host command_to_run
Ќе се поврзете со оддалечената машина, ќе извршите автентикација и командата ќе се изврши.
Како што рековме претходно, ако препраќањето X11 е овозможено на двата компјутера, можете да пристапите до таа функционалност со внесување:
- ssh -X remote_host
Под услов да ги имате соодветните алатки на вашиот компјутер, GUI програмите што ги користите на далечинскиот систем сега ќе го отворат својот прозорец на вашиот локален систем.
Оневозможување на автентикација со лозинка
Ако сте создале SSH клучеви, можете да ја подобрите безбедноста на вашиот сервер со оневозможување на автентикација само со лозинка. Освен конзолата, единствениот начин да се најавите на вашиот сервер ќе биде преку приватниот клуч што се спарува со јавниот клуч што сте го инсталирале на серверот.
Предупредување: Пред да продолжите со овој чекор, проверете дали сте инсталирале јавен клуч на вашиот сервер. Во спротивно, ќе бидете затворени!
Како root или корисник со sudo привилегии, отворете ја конфигурациската датотека sshd
:
- sudo nano /etc/ssh/sshd_config
Лоцирајте ја линијата што гласи Автентикација на лозинка
и отстранете ја од коментарот со отстранување на водечката #
. Потоа можете да ја промените неговата вредност во no
:
PasswordAuthentication no
Уште две поставки кои не треба да се менуваат (под услов да не сте ја измениле оваа датотека претходно) се PubkeyAuthentication
и ChallengeResponseAuthentication
. Тие се стандардно поставени и треба да читаат на следниов начин:
PubkeyAuthentication yes
ChallengeResponseAuthentication no
Откако ќе ги направите промените, зачувајте ја и затворете ја датотеката.
Сега можете повторно да го вчитате демонот SSH:
- sudo systemctl reload ssh
Автентикацијата со лозинка сега треба да биде оневозможена, а вашиот сервер треба да биде достапен само преку автентикација со SSH клуч.
Заклучок
Учењето на вашиот начин околу SSH во голема мера ќе има корист од било кој од вашите идни напори за компјутерски облак. Додека ги користите различните опции, ќе откриете понапредна функционалност што може да ви го олесни животот. SSH остана популарен бидејќи е безбеден, лесен и корисен во различни ситуации.
Следно, можеби ќе сакате да научите како да работите со SFTP за да извршите пренос на датотеки со командна линија.