першу задачу — адресацію комп'ютера в україні незалежно від динамічно виданого ip, — майже вирішено тут:
майже, бо поки що я адресую рутер, за якою ця машина ховається. наступна задача — отримати доступ до комп'ютера в україні по ssh.
openssh: командний рядок на віддаленому комп'ютері
підключаюсь до комп'ютера в україні за допомогою того ж таки teamviewer'а — і вкотре радію, що перед від'їздом налаштував цей спосіб доступу: не елегантно, але працює. створюю собі там новий користувацький профіль (нехай test_ssh), щоби не логінитися через ssh в той, під яким там працюють люди.далі відкриваю там термінал, встановлюю openssh:
sudo apt-get install openssh-server
для manjaro та інших похідних від arch інакше:
sudo pacman -S openssh
роблю резервну копію загальносистемного файлу налаштувань openssh:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
sudo chmod a-w /etc/ssh/sshd_config.backup
редагую налаштування:
sudo nano /etc/ssh/sshd_config
…і бемц — перечіпляюся через один з глюків teamviewer'а: незалежно від налаштування «send key combinations», nano на тій стороні не отримує ctrl+o чи ctrl+x, тож неможливо ані зберегти файл, ані коректно закрити редактор. на щастя, маю там midnight commander, і mcedit нормально отримує комбінації ctrl+fx, тож:
sudo mcedit /etc/ssh/sshd_config
роблю деякі невеликі зміни в шаблонному файлі конфігурації openssh за хорошою онлайновою підказкою. по-перше, залишаю поки що стандартний порт ssh (22) та автентифікацію паролем — спершу треба переконатися, що ланцюжок плацює, а тоді вже експериментувати з портами і ключами безпеки:
Port 22
PasswordAuthentication yes
логін рутом? дивно, що таке дозволено в шаблоні! виправляю:
PermitRootlogin no
а щоби лише моєму користувачеві дозволено було підключатися по ssh, обмежую список користувачів:
AllowUsers test_ssh
(насправді мій профіль називається інакше — хто ж публікує таке в щоденнику?) щоби випробувати тунелювання X11 (програми з інтерфейсом XWindows можуть виконуватися на віддаленій машині, але інтерфейс показувати на моїй — це ж круто, ні?), залишаю/додаю таке:
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes
для початку досить. запускаю сервіс ssh на віддаленій машині:
sudo restart ssh
(так це працює на debian та похідних; на arch'і треба скористатися systemctl). після цього в теорії сервіс ssh має працювати на віддаленій машині й слухати порт 22, а коли приходить запит від користувача test_ssh — запитати пароль і дати доступ до командного рядка:
ssh test_ssh@tivasyk_ukraine.duckdns.org
на ділі ж нічого не вийде, тому що…
рутер і файрволи
…між двома комп'ютерами є рутер (і це саме рутер, а не машина в його локальній мережі має отой динамічний ip, що на нього посилається tivasyk_ukraine.duckdns.org), а на самих комп'ютерах є файрволи. і це ще якщо власне канал в інтернеті «прозорий» і жоден з провайдерів між двома комп'ютерами не блокує ssh.почав з файрволів. тут є два варіанти: поганий — вимкнути (хоча для тестування годиться), і правильний — налаштувати «вікно» у файрволі для ssh (порт 22, вхід/вихід, tcp); робиться елементарно за допомогою того чи іншого графічного інтерфейсу до iptables.
на рутері потрібно налаштувати форвардинг (переадресацію) для порту 22. коротко: рутер отримує запит на порт 22 і просто його ігнорує, тому що не підтримує ssh (звісно, якщо це не рутер з прошивкою ddwrt і налаштованим ssh!) — потрібно вказати йому переадресовувати всі запити на порт 22 до певної машини в локальній мережі.
рутер в україні — недорогий tp-link, але з веб-інтерфейсом і досить непоганим набором можливостей. через той-таки teamviewer відкриваю той веб-інтерфейс у вогнелисі. по-перше, резервую ip для моєї віддаленої машини в налаштуваннях dhcp рутера (в більшости випадків буде щось на кшалт 192.168.0.101 чи 192.168.1.101) — тепер комп'ютер матиме постійний ip без необхідності морочитися з налаштуванням статичного ip на обох пристроях. по-друге, налаштовую переадресацію порту на цей комп'ютер.
от тепер можна і спробувати (на локальній машині):
ssh test_ssh@tivasyk_ukraine.duckdns.org
настправді в мене це не одразу спрацювало, і я трохи «посмикав» файрволи на обох машинах та переадресацію порту на рутері… і хоч наче нічого не міняв, зненацька я отримав запрошення:
tivasyk_ssh@notebook:~$
зробив ls, щоби перевірити — таки працює!
результат: доступ до комп'ютера в україні по ssh
отже, тепер я можу відкривати термінал з командним рядком на віддаленому комп'ютері в україні. що далі?- навчитися копіювати файли собі з віддаленого пк (scp);
- підключити свою домашню теку віддаленої машини як теку на локальній (sshfs);
- спробувати, як працює форвардинг X11 (і оптимізувати швидкість);
- налаштувати vnc, щоби позбутися teamviewer'а і відключити форвардинг X11;
- розібратися з перевагами/недоліками форвардінгу tcp, vpn через ssh та openvpn;
- почитати, які ще «фокуси» можна робити через ssh;
- і при тім усім — не завалити іспит на водійську посвідку, він вже за три дні!