LXF136:DrBrown3

Материал из Linuxformat.

Перейти к: навигация, поиск

Содержание

Из Windows в Linux

Уз­най­те, как по­лу­чить дос­туп к лю­би­мо­му Linux из ком­пь­ю­те­ра с ме­нее лю­би­мой Windows, при по­мо­щи на­ше­го на­бо­ра ути­лит.

На кур­сах для ад­минист­ра­то­ров Linux, ко­то­рые я ве­ду, на удив­ление вы­со­ка (ед­ва ли не 50 %) до­ля слу­ша­те­лей, не имею­щих пря­мо­го досту­па к ад­минист­ри­руе­мым ком­пь­ю­те­рам. У боль­шин­ства из них на ком­пь­ю­те­ре Windows. К сча­стью, в Windows есть несколь­ко ути­лит для досту­па к сер­ве­рам Linux, и мы рас­смот­рим неко­то­рые из них.

Я раз­де­лил их на три груп­пы: для досту­па к команд­ной стро­ке, для пе­ре­да­чи фай­лов и для досту­па к гра­фи­че­ско­му ра­боче­му сто­лу.

Ути­ли­ты команд­ной стро­ки

Са­мый про­стой и оп­ре­де­лен­но са­мый ста­рый про­то­кол для уда­лен­но­го досту­па к команд­ной стро­ке – Telnet, и, на­сколь­ко мне из­вест­но, это един­ствен­ный кли­ент для уда­лен­но­го досту­па к обо­лоч­ке, по­став­ляе­мый с Windows. Его очень лег­ко на­стро­ить и за­пустить из скром­ной команд­ной стро­ки Windows. Од­на­ко есть по мень­шей ме­ре три при­чи­ны, по­че­му Telnet, по­жа­луй, не луч­ший вы­бор. Во-пер­вых, он уяз­вим для зло­умыш­ленников, пе­ре­хва­ты­ваю­щих се­те­вой тра­фик, так как все дан­ные (вклю­чая имя поль­зо­ва­те­ля, па­роль и все со­от­вет­ствую­щие диа­ло­ги) пе­ре­да­ют­ся в ре­жи­ме, ко­то­рый крип­то­гра­фы на­зы­ва­ют от­кры­тым тек­стом. Упо­ми­ная Telnet на сво­их кур­сах, я крив­люсь и го­во­рю, что он уста­рел, но, ес­ли че­ст­но, опас­ность его ис­поль­зо­вания в до­ве­рен­ной локаль­ной се­ти пре­уве­ли­че­на.

Вто­рая при­чи­на не поль­зо­вать­ся Telnet бо­лее праг­ма­тич­на: на ва­шем сер­ве­ре Linux в кон­фи­гу­ра­ции бранд­мау­эра порт Telnet (23) ско­рее все­го за­крыт, а сер­вер Telnet ско­рее все­го не уста­нов­лен. Конеч­но, ес­ли у вас есть пра­ва ад­минист­ра­то­ра на сер­ве­ре, все это по­пра­ви­мо. Но тре­тья и са­мая веская при­чи­на – есть го­раз­до бо­лее безо­пас­ное, гиб­кое и про­стое в на­строй­ке ре­шение: SSH (за­щи­щен­ная обо­лоч­ка).

SSH и его дру­зья

За­щи­щен­ная обо­лоч­ка (SSH) – безо­пас­ный про­то­кол для уда­лен­но­го досту­па к команд­ной стро­ке. Безо­пас­ность обес­пе­чи­ва­ет­ся шиф­ро­ванием с от­кры­тым/за­кры­тым клю­чом (нечто свя­зан­ное с перемножением двух ог­ром­ных простых чисе­л – ну, так мне го­во­ри­ли), ко­то­рое при­ме­ня­ет­ся и для ау­тен­ти­фи­ка­ции сер­ве­ра кли­ен­том, и для соз­дания об­ще­го клю­ча, ис­поль­зуе­мо­го при всем по­сле­дую­щем об­мене дан­ны­ми (вклю­чая ввод имени поль­зо­ва­те­ля и па­ро­ля). Та­ким об­ра­зом, пе­ре­хват тра­фи­ка со­единения SSH не име­ет для кан­ди­да­та в ха­ке­ры, про­слу­ши­ваю­ще­го ва­шу сеть, ника­ко­го смыс­ла. У про­то­ко­ла SSH есть од­на важ­ная воз­мож­ность: за­шиф­ро­ван­ным со­единением мож­но обес­пе­чить тра­фик на дру­гие се­те­вые пор­ты, соз­дав туннель. Это на­зы­ва­ет­ся про­бро­сом пор­тов [port forwarding], и я вер­нусь к нему поз­же.

Ок­но на­строй­ки Putty вы­гля­дит уст­ра­щаю­ще, но боль­шин­ст­ву на­стро­ек мож­но ос­та­вить зна­че­ния по умол­ча­нию. Как ми­ни­мум, нуж­но вве­сти имя хос­та сер­ве­ра.

В стан­дарт­ной по­став­ке Windows нет кли­ен­та SSH, но су­ще­ству­ет несколь­ко сво­бод­ных кли­ен­тов, ко­то­рые мож­но ска­чать. На­при­мер, в на­бо­ре ути­лит Cygwin (вернитесь на пре­ды­ду­щую страницу с ру­ко­во­дством по Cygwin) есть кли­ент команд­ной стро­ки SSH и свя­зан­ные с ним ути­ли­ты вро­де SCP, ssh-keygen и ssh-agent. Они ра­бо­та­ют точ­но так же, как в Linux. Но, на­вер­ное, са­мый из­вест­ный кли­ент SSH для Windows – Putty, ко­то­рый мож­но бес­плат­но за­гру­зить с сай­та http://www.chiark.greenend.org.uk.

В Putty есть гра­фи­че­ское ок­но на­строй­ки; из-за него про­грам­ма вы­гля­дит слож­ной и пу­га­ет, но есть хо­ро­шее ру­ко­во­дство поль­зо­ва­те­ля, и на са­мом де­ле за­дать нуж­но толь­ко имя поль­зо­ва­те­ля и про­то­кол (SSH). Бо­лее слож­ные кон­и­гу­ра­ции мож­но за­помнить как «со­хранен­ные се­ан­сы» и за­гру­жать их в бу­ду­щем. При от­кры­тии со­единения вы по­па­дае­те в ок­но тер­ми­на­ла, та­кое же, как лю­бой дру­гой тер­ми­нал, по­это­му я не стал тра­тить­место на эк­ран­ный снимок.

В ва­шем ди­ст­ри­бу­ти­ве Linux точ­но бу­дет сер­вер SSH, но, воз­мож­но, не уста­нов­лен­ный по умол­чанию. В Ubuntu, на­при­мер, нуж­но уста­но­вить па­кет openssh-server.

Ути­ли­ты пе­ре­да­чи фай­лов

Как и Telnet, FTP (про­то­кол пе­ре­да­чи фай­лов) стар как мир, и в Windows есть кли­ент команд­ной стро­ки FTP. Недостат­ки FTP по­хо­жи на недостат­ки Telnet: нет шиф­ро­вания, по­это­му ва­ши имя поль­зо­ва­те­ля и па­роль (не го­во­ря уже о ко­пи­руе­мых фай­лах) пе­ре­да­ют­ся от­кры­тым тек­стом. Од­на­ко FTP про­дол­жа­ет ши­ро­ко ис­поль­зо­вать­ся для досту­па к фай­лам пуб­лич­ных ин­тернет-ре­по­зи­то­ри­ев – это так на­зы­вае­мый «аноним­ный» FTP, при ко­то­ром вер­ные имя и па­роль не тре­бу­ют­ся, а фай­лы мож­но толь­ко ска­чи­вать, по­это­му от­сут­ствие шиф­ро­вания не иг­ра­ет ро­ли. В ро­ли ути­ли­ты уда­лен­но­го досту­па с ра­бо­че­го сто­ла Win­dows к сер­ве­ру Linux его воз­мож­но­сти ог­раниче­ны. В ди­ст­ри­бу­ти­ве Linux FTP-сер­вер ско­рее все­го не уста­нов­лен по умол­чанию, хо­тя доступ­ны несколь­ко сер­ве­ров, и я де­таль­но опи­сал на­строй­ку ProFTP в сво­ей руб­ри­ке в LXF132. Необыч­ное ис­поль­зо­вание пор­тов FTP (сер­вер от­кры­ва­ет но­вое со­единение с кли­ен­том) вы­зы­ва­ет про­бле­мы с бранд­мау­эра­ми.

Бо­лее удач­ный ва­ри­ант для ко­пи­ро­вания фай­лов ме­ж­ду Windows и Linux – SCP (за­щи­щен­ная cp). Эта коман­да по­строе­на по­верх про­то­ко­ла SSH; ее син­так­сис яв­ля­ет­ся рас­ши­рением cp. В Windows та­кой ути­ли­ты нет, но она есть в Cygwin.

Вам мо­жет при­гля­нуть­ся и WinSCP (http://winscp.net), гра­фи­че­ская обо­лоч­ка SCP, доступ­ная для Windows. Она да­ет и тра­ди­ци­он­ное пред­став­ление фай­ло­вой систе­мы уда­лен­но­го ком­пь­ю­те­ра в сти­ле Проводника, и двух­панель­ное пред­став­ление фай­ло­вых систем уда­лен­но­го и локаль­но­го ком­пь­ю­те­ров в сти­ле фай­ло­вых менед­же­ров, с воз­мож­но­стью пе­ре­таски­вать фай­лы с од­ной па­нели на дру­гую (доступ­ны и под­клю­чае­мые мо­ду­ли WinSCP для двух­панель­ных фай­ло­вых менед­же­ров Windows). WinSCP про­ста в уста­нов­ке и на­строй­ке. Для под­клю­чения нуж­но ука­зать имя сер­ве­ра, имя поль­зо­ва­те­ля и па­роль как при обыч­ном под­клю­чении по SSH. WinSCP мо­жет ра­бо­тать по про­то­ко­лам пе­ре­да­чи фай­лов FTP, SFTP или SCP; я бы ре­ко­мен­до­вал SCP.

Ути­ли­ты для досту­па к GUI

Уда­лен­ные гра­фи­че­ские при­ло­же­ния (кли­ен­ты X) мо­гут под­клю­чать­ся к ло­каль­но­му сер­ве­ру X на­пря­мую или по за­щи­щен­но­му SSH-со­еди­не­нию.

VNC (вир­ту­аль­ный се­те­вой про­то­кол) – по су­ти, спо­соб пе­ре­да­чи со­дер­жи­мо­го уда­лен­но­го бу­фе­ра кад­ра (т. е. уда­лен­но­го ра­бо­че­го сто­ла) на эк­ран локаль­но­го ком­пь­ю­те­ра и эф­фек­тив­но­го об­нов­ления локаль­ной ко­пии при из­менении со­дер­жи­мо­го уда­лен­но­го ра­бо­че­го сто­ла. По­это­му аб­со­лют­но без­раз­лич­но, ка­кая ОС сто­ит на уда­лен­ном ком­пь­ю­те­ре или ка­кой ра­бо­чий стол ис­поль­зу­ет­ся. Нуж­но толь­ко за­пустить на уда­лен­ном ком­пь­ю­те­ре сер­вер VNC. VNC по­зво­ля­ет удоб­но управ­лять уда­лен­ным ра­бо­чим сто­лом. Это мож­но ис­поль­зо­вать при обу­чении, когда уда­лен­ный поль­зо­ва­тель смот­рит на свой эк­ран, по­ка вы управ­ляе­те им во вре­мя ре­шения ка­кой-то за­да­чи. Или про­сто для досту­па к (на­при­мер) ра­бо­че­му сто­лу Red Hat со стоя­ще­го пе­ред ва­ми ком­пь­ю­те­ра с Windows.

В ка­че­стве ил­лю­ст­ра­ции по­про­бу­ем под­клю­чить­ся к ра­бо­че­му сто­лу Ubuntu из Windows че­рез VNC. Мы да­же пой­дем чуточку даль­ше, про­туннели­ро­вав тра­фик VNC че­рез SSH-со­единение, по­это­му един­ствен­ный порт, ко­то­рый нуж­но от­крыть в Ubuntu – 22.

  1. В Ubuntu я уста­но­вил сер­вер SSH и x11vnc, ко­то­рая по­зво­ля­ет уда­лен­но под­клю­чить­ся к от­кры­той сес­сии X: $ sudo apt-get install opensshserver x11vnc
  2. В Windows я уста­но­вил Putty и TightVNC (один из мно­гих кли­ен­тов VNC для Windows).
  3. В окне на­стро­ек Putty в раз­де­ле Session я ввел IP-ад­рес сер­ве­ра Ubuntu.
  4. В окне на­стро­ек Putty в раз­де­ле Connection > SSH > Tunnels я ввел 5900 как ис­ход­ный порт и localhost:5900 как порт на­зна­чения. Здесь мы вы­пол­ня­ем локаль­ное пе­ре­на­прав­ление пор­тов на ком­пь­ю­те­ре Win­dows, по­это­му сер­вер VNC (ко­то­рый слу­ша­ет на пор­те 5900 на ком­пь­ю­те­ре Ubuntu) досту­пен на пор­те 5900 на ком­пь­ю­те­ре Windows. Зай­дя в команд­ную стро­ку Ubuntu из Putty, я за­пустил сер­вер VNC коман­дой: $ x11vnc -safer -localhost -noxdamage -nopw -once -display :0 (Здесь по­на­до­би­лось не­мно­го по­гуг­лить и по­экс­пе­ри­мен­ти­ро­вать, что­бы най­ти вер­ный на­бор оп­ций.)
  5. На ком­пь­ю­те­ре Windows я за­пус­тил TightVNC и под­клю­чил­ся к localhost:5900. На­гра­дой мне был вид яр­ко-ли­ло­во­го ра­бо­че­го сто­ла Ubuntu.

Так как VNC нуж­но оп­ре­де­лять из­ме­не­ния уда­лен­но­го бу­фе­ра кад­ра и пе­ре­да­вать их пик­сель за пик­се­лем, при об­нов­ле­нии эк­ра­на бу­дут за­мет­ны по­дер­ги­ва­ния кар­тин­ки. В боль­шин­ст­ве слу­ча­ев это не ме­ша­ет, но ри­со­ва­ни­ем в GIMP я бы за­ни­мать­ся не стал.

На­ча­ло кон­ца

Ста­ра­ясь не схо­дить­ся друг с дру­гом как мож­но в боль­шем, Windows и Linux от­ли­ча­ют­ся друг от дру­га да­же за­вер­ше­ни­ем строк в тек­сто­вых фай­лах. В Windows ис­поль­зу­ет­ся CRLF («воз­врат ка­рет­ки» плюс «пе­ре­вод стро­ки»); в Linux ис­поль­зу­ет­ся про­сто LF. По­это­му тек­сто­вые фай­лы, ско­пи­ро­ван­ные из Linux в Win­dows, нель­зя бу­дет нор­маль­но ре­дак­ти­ро­вать в Блокноте (хо­тя Wordpad нор­маль­но с ни­ми ра­бо­та­ет). В FTP есть ре­жим пе­ре­да­чи ASCII, ко­то­рый об этом за­бо­тит­ся, и есть про­стые ути­ли­ты unix2dos и dos2unix (так­же из­вест­ные как todos и fromdos), вы­пол­няю­щие пе­ре­вод сим­во­лов.

Пе­ре­брось­те этот порт!

За­щи­ща­ем без­за­щит­ных: про­брос уда­лен­но­го пор­та SSH (ввер­ху) и ло­каль­но­го пор­та (вни­зу).

В SSH есть до­воль­но по­лез­ный при­ем – про­брос уда­лен­но­го пор­та, по­зво­ляю­щий уда­лен­но­му сер­ве­ру SSH слу­шать со­еди­не­ния на лю­бом за­дан­ном пор­те и пе­ре­на­прав­лять тра­фик че­рез за­щи­щен­ный SSH-тун­нель на за­дан­ный порт на ло­каль­ном ком­пь­ю­те­ре. В верх­ней час­ти ри­сун­ка поль­зо­ва­тель на ком­пь­ю­те­ре Mercury вы­пол­нил ко­ман­ду:

$ ssh -R 4023:mercury:23 venus

За­тем на ком­пь­ю­те­ре Earth поль­зо­ва­тель за­пус­ка­ет Telnet, ко­то­рый под­клю­ча­ет­ся на порт 4023 ком­пь­ю­те­ра Venus. Пе­ре­на­прав­ле­ние пор­тов оз­на­ча­ет, что тра­фик за­щи­щен, и един­ст­вен­ный порт, ко­то­рый дол­жен быть от­крыт на сер­ве­ре – 22. На прак­ти­ке ‘Venus’ и ‘Earth’ час­то один и тот же ком­пь­ю­тер.

Пе­ре­на­прав­ле­ние ло­каль­но­го пор­та по­хо­же на пе­ре­на­прав­ле­ние уда­лен­но­го, но в этом слу­чае тра­фик пе­ре­на­прав­ля­ет кли­ент, а не сер­вер. В ниж­ней час­ти ри­сун­ка поль­зо­ва­тель на ком­пь­ю­те­ре Mercury за­пус­тил ко­ман­ду:

$ ssh -L 8080:earth:80 venus

(Опять же, ‘venus’ и ‘earth’ час­то один и тот же ком­пь­ю­тер.) За­тем мож­но под­клю­чить­ся к за­шиф­ро­ван­но­му ка­на­лу, от­крыв в брау­зе­ре localhost:8080. В ос­нов­ном тек­сте при­ве­ден при­мер про­бро­са уда­лен­но­го пор­та для VNC-тра­фи­ка.

Личные инструменты
  • Купить электронную версию
  • Подписаться на бумажную версию