Подключение к виртуальному серверу по SSH и SFTP. Подключиться по ssh к вашему роутеру


Удаленное управление Ububtu без выделенных IP

Можно было бы использовать TeamViewer (если офисы некоммерческие :)), но дело в том, что в самих офисах люди имеют лишь обычные права пользователей, дабы использовать ПК только в рабочих целях и не лезть, куда не просят. А TeamViewer запущенный обычным пользователем будет иметь его же - обычные права.

Решение - SSH-тоннели. Придется иметь посредника - SSH сервер с выделенным внешним IP адресом. Коим, вероятно, может оказаться и ваш продвинутый роутер, перепрошитый DD-WRT (чтобы не держать компьютер постоянно включенным).

Чтобы не запутаться в понятиях "клиент", "сервер" (ведь офисный компьютер - сервер vnc и клиент ssh одновременно и т.д.). Определимся: компьютер, который стоит в офисе и к которому нужно подключаться - ПКОфис. SSH-сервер с внешним IP - "Сервер". Любой компьютер с которого мы хотим управлять ПКОфисом - "ПКДом".

ПКОфис - установка необходимых служб на Ubuntu 12.04

Основная работа будет с нашим ПКОфис, т.к. он должен инициировать обратное ssh соединение и запускать VNC сервер с root правами. Причем сам root пользователь в Ubuntu отключен.

Устанавливаем SSH-сервер

sudo apt-get install openssh-server openaah-client autossh

Дождитесь завершения установки. Теперь нужно сделать несколько изменений в конфиге ssh, в целях безопасности. Предварительно сделав резервную копию старого конфига.

sudo cp /etc/ssh/sshd_config ~ sudo gedit /etc/ssh/sshd_config

В конце файла допишем пару строк:USERNAME - заменяем на имя пользователя, которому вы разрешаете подключаться по ssh. Если нужно разрешить доступ нескольким пользователям - пишем их login имена через пробел.

PermitRootLogin no AllowUsers USERNAME TCPKeepAlive yes ClientAliveInterval 60 ClientAliveCountMax 3 ## ClientAliveCountMax ##################################### # # # Задает количество сообщений к клиентам, которые sshd # # посылает подряд, не получая какого либо ответа от # # клиента. Если пороговое значение будет достигнуто, а # # клиент так и не ответил - sshd отключит клиента, прервав # # ssh сессию. Стоит отметить, что использование таких # # сообщений в корне отличается от директивы TCPKeepAlive. # # Сообщения к/от клиентов посылаются по зашифрованному # # каналу и поэтому не подвержены спуфингу. Сообщения же # # TCPKeepAlive спуфингу подвержены. Механизм client alive # # особо ценен в тех случаях, когда серверу и клиенту нужно # # знать когда соединение стало неактивным. По умолчанию # # значение равно 3. В случае, если ClientAliveInterval # # задан равным 15 и ClientAliveCountMax оставлен по # # умолчанию, неотвечающие клиенты будут отключены примерно # # через 45 секунд. Эта директива работает только для # # протокола ssh3. # # # ## ClientAliveInterval ##################################### # # # Задает временной интервал в секундах. Если в течении # # этого интервала не было обмена данными с клиентом, sshd # # посылает сообщение по зашифрованному каналу, # # запрашивающее ответ от клиента. По умолчанию - 0, т.е. # # не посылать таких сообщений. Эта директива работает # # только для протокола ssh3. # # #

И настройки сервера (файл /etc/ssh/ssh_conf)

PermitRootLogin no AllowUsers USERNAME #TCPKeepAlive yes ServerAliveInterval 60 ServerAliveCountMax 3 StrictHostKeyChecking=no BatchMode=yes

Желательно, также поменять порт ssh (Ports). По-умолчанию он работает на порте TCP/IP 22, поэтому множество вредоносных скриптов пытаются сканировать и взламывать этот порт. Поставив порт с большим значением усложнит процесс нахождения вашего ssh сервера. Можете поставить, например, порт 4890.

Чтобы изменения вступили в силу, нужно перезапустить ssh сервер Ubuntu. пишем в консоли:

sudo service ssh restart

Устанавливаем VNC сервер

Для начала заходим как root! так как в будущем установленные приложения будут запускаться от root при старте системы, если вы установите и настроите приложения используя просто sudo – все файлы окажутся вашими, и система не сможет их использовать.

sudo -i

Далее все комады без sudo, т.к. мы уже работаем от лица root.Устанавливаем необходимые пакеты:

apt-get install tightvncserver xfonts-base xfonts-75dpi twm xterm

Создаем файл настроек:

pico /etc/vnc.conf

В файл прописываем строку:

$fontPath = "/usr/share/fonts/X11/75dpi/,/usr/share/fonts/X11/misc/"

Запускаем VNC сервер с параметрами

vncserver -depth 8 -geometry 800x600 -nevershared -dontdisconnect

При первом запуске vnc-сервер попросит нас задать пароль, который будет использоваться для доступа к удаленному рабочему столу. Здесь нельзя использовать длинный пароль – обычно VNC пароль длиной до 8 символов. Потом нас спросят, хотим ли мы задать view-only пароль? Или задаем или нет, по вкусу.

На данном этапе вы уже можете подключиться к VNC серверу из вашей локальной сети с помощью VNC клиента с другого компьютера, используя локальный IP ПКОфис. Советую проверить эту возможность, чтобы знать, что до этого этапа вы все делаете правильно.

Решение проблемы входа в Ubuntu - правильный пароль, черный экран

Внимание! Есть вероятность, что вы не сможете зайти под своим пользователем в Ubuntu, если сейчас разлогинитесь. Система примет ваш пароль начнет загружаться, экран потемнеет, потом появиться указатель мыши, потом вы вернетесь на экран выбора пользователя, услышав звук ошибки. Хотя ни о какой ошибке Ubuntu вас не оповестит. Причина - права доступа к файлу .Xauthority. Запишите на листочек порядок действий, и попробуйте выйти и зайти в свой акаунт.

На login screen жмем Ctrl+Alt+F3 - открывается терминал. В нем прописываем строку "ls -lah" и получаем результат:

ls -lah . . . . -rw------- 1 root root 53 Nov 29 10:19 .Xauthority . . . .

Если вы видите в строке права "root root" вместо вашего логина USERNAME. Вам надо сделать следующее:

chown username:username .Xauthority

Затем нажимайте комбинацию Alt + → пока снова не увидите окно выбора пользователя. На этот раз ваш пароль "прокатит" :)

Автозапуск VNC сервера с определенным пользователем

Прописываем код для автоматического запуска VNC сервера. А так как удаленный рабочий стол автоматически загружается в root-сессию, это не очень удобно – мы ведь хотим видеть именно свой рабочий стол. Настроим сервер так, чтобы «экспортировался» рабочий стол определенного пользователя (командой su запускаем сервер от имени нужного пользователя).

Создаем файл /etc/init.d/vncserver - это будет скрипт запуска сервера от нужного пользователя с указанными настройками

pico /etc/init.d/vncserver

В файле прописываем следующее (отредактируйте имя пользователя, размеры экрана, IP внешнего ssh сервера, и название которое будет в заголовке окна, здесь это Atom). В моем случае - имя пользователя "toopro"

#!/bin/sh -e ### BEGIN INIT INFO # Provides: vncserver # Required-Start: networking # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 ### END INIT INFO PATH="$PATH:/usr/X11R6/bin/" # The Username:Group that will run VNC export USER="toopro" #${RUNAS} # The display that VNC will use DISPLAY="1" # Color depth (between 8 and 32) DEPTH="16" # The Desktop geometry to use. #GEOMETRY="x" #GEOMETRY="800x600" GEOMETRY="1024x768" #GEOMETRY="1280x1024" # The name that the VNC Desktop will have. NAME="TooProOffice1" OPTIONS="-name ${NAME} -depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}" . /lib/lsb/init-functions case "$1" in start) log_action_begin_msg "Starting vncserver for user '${USER}' on localhost:${DISPLAY}" su ${USER} -c "/usr/bin/vncserver ${OPTIONS}" su ${USER} -c "autossh -M 0 -fNg -R 5557:localhost:5901 [email protected]_SERVER_IP_ADDRESS &" #X server su ${USER} -c "autossh -M 0 -fNg -R 5587:localhost:80 [email protected]_SERVER_IP_ADDRESS &" #apache http su ${USER} -c "autossh -M 0 -fNg -R 5527:localhost:22 [email protected]_SERVER_IP_ADDRESS &" #ssh console ;; stop) log_action_begin_msg "Stoping vncserver for user '${USER}' on localhost:${DISPLAY}" su ${USER} -c "/usr/bin/vncserver -kill :${DISPLAY}" killall ssh ;; restart) $0 stop $0 start ;; esac exit 0

При соединение по ssh используем флаг -N , который сообщает, что никаких ssh-команд нам посылать не понадобится, только открыть порт. И в конце ставим символ & , чтобы нам не выпадала ssh консоль сервера, т.к. при загрузке системы это может помешать дальнейшему процессу автозагрузчика.

И присваиваем файлу бит «executable»

chmod +x /etc/init.d/vncserver

Запускаем наш созданный сервис

/etc/init.d/vncserver start

Теперь уже, так как будет стартовать рабочий стол определенного пользователя (а не root), система попросит нас ввести пароль для этой сессии. Этот НЕ ВАШ пароль профиля, а новый пароль, который VNC будет у вас запрашивать при попытку подключения к нему с помощью VNC клиента.

[email protected]:~# /etc/init.d/vncserver start * Starting vncserver for user 'toopro' on localhost:1... You will require a password to access your desktops. Password: Verify: Would you like to enter a view-only password (y/n)? n xauth: creating new authority file /home/toopro/.Xauthority New 'TooProOffice1' desktop is toopropc:1 Creating default startup script /home/toopro/.vnc/xstartup Starting applications specified in /home/toopro/.vnc/xstartup Log file is /home/toopro/.vnc/Atom:1.log

Как видите, создаются файлы запуска xstartup в папке вашего пользователя и введенный пароль ложится в файл .Xauthority. С xstartup нам еще придется поработать.

Теперь прописываем скрипт в автозагрузку

update-rc.d vncserver defaults

Система покажет несколько предупреждений, это связано с тем, что «runlevels» которые мы прописали в стартап-скрипте (старт S, стоп 0,6) не соответствуют ранлевелам по умолчанию.

На этом этапе можно перегрузить компьютер и снова попробовать подключиться к VNC серверу - увидеть свой рабочий стол со значками и иконками нужного вам пользователя. Но в случаем с Ubuntu 12.04 - это оказалось не так просто. Все что я увидел - мои обои рабочего стола - без меню, без тулбара и каких либо инструментов Unity. Будем решать эту проблемку :)

Решение проблемы: Ubuntu VNC нет меню, тулбара, только обои

Открываем тот самый недавно созданный xstartup файл из вашей домашней папки

gedit /home/USERNAME/.vnc/xstartup

Заменяем содержимое файла на такое:

#!/bin/sh # VNC Server (Virtual-Mode) start-up script compatible with Ubuntu 12.04 [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources xsetroot -solid grey vncconfig -iconic & if [ -f /usr/bin/gnome-session ]; then # Some gnome session types won't work with Xvnc, try to pick a sensible # default. for SESSION in "ubuntu-2d" "2d-gnome"; do if [ -f /usr/share/gnome-session/sessions/$SESSION.session ]; then DESKTOP_SESSION=$SESSION; export DESKTOP_SESSION GDMSESSION=$SESSION; export GDMSESSION STARTUP="/usr/bin/gnome-session --session=$SESSION"; export STARTUP fi done fi if [ -x /etc/X11/Xsession ]; then /etc/X11/Xsession elif [ -x /etc/X11/xdm/Xsession ]; then /etc/X11/xdm/Xsession elif [ -x /etc/X11/xinit/Xsession ]; then /etc/X11/xinit/Xsession elif [ -x /etc/gdm/Xsession ]; then /etc/gdm/Xsession gnome-session elif [ -x /etc/kde/kdm/Xsession ]; then /etc/kde/kdm/Xsession elif [ -x /usr/dt/bin/Xsession ]; then XSTATION=1 DTXSERVERLOCATION=local /usr/dt/bin/Xsession elif [ -x /usr/dt/bin/dtsession ]; then /usr/dt/bin/dtsession else if which twm > /dev/null 2>&1; then xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & twm else xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" fi fi vncserver -kill $DISPLAY

Если что-то пойдет не так, попробуйте проверить разрешение executable на ваш файл.При желании, вы можете скопировать этот файл в /etc/vnc/xstartup.custom и сделать его executable, чтобы применить этот fix для всех запусков vncserver'а.

Внимание! По локальной сети VNC пароль по умолчанию передается в небезопасном виде, равно как и вводимые с клавиатуры данные. Поэтому не стоит использовать этот способ для администрирования в больших сетях или если у вас есть внешний IP на этот компьютер. Для защиты данных лучше воспользоваться SSH-туннелем.

Решение проблемы разрывов SSH туннелей

Сеть не идеальна, тем более, в моем случае подключение часто происходит с помощью wifi посредственного качества. Пакеты теряются, благодаря KeepAlive система это видит и разрывает неработающий канал. При этом его надо вновь поднимать. Есть два способа сделать это.

1. Пытаться переподключаться кроном
$ crontab -e

создаем расписание следующего вида:

TUNCMD1='ssh -f -N -R 5581:localhost:80 [email protected]_SERVER_IP_ADDRESS $' TUNCMD2='ssh -f -N -R 5581:localhost:80 [email protected]_SERVER_IP_ADDRESS $' */5 * * * * pgrep -f "$TUNCMD1" &>/dev/null || $TUNCMD1 */5 * * * * pgrep -f "$TUNCMD2" &>/dev/null || $TUNCMD2

Сохраняем и проверяем, что расписание принято

$ crontab -l
2. Использовать autossh вместо обычной команды ssh

Тогда строку из файла /etc/init.d/vncserver

su ${USER} -c "ssh -f -N -R 5555:localhost:5901 [email protected]_SERVER_IP_ADDRESS $"

вырезаем, видоизменяем и вставляем в файл /etc/init/autossh.conf

description "autossh tunnel" author "TooPro.org" start on (local-filesystems and net-device-up IFACE=eth0 and net-device-up IFACE=eth2) #eth2 - use if you have multiple interfes stop on runlevel [016] respawn respawn limit 5 60 su toopro -c "autossh -M 0 -f -N -R 5555:localhost:5901 [email protected]_SERVER_IP_ADDRESS $" #exec autossh -M 0 -f -N -R 10000:192.168.1.1:22 -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -o "StrictHostKeyChecking=no" -o "BatchMode=yes" -i /home/user/.ssh/id_rsa [email protected]
  • -M 0 говорит autossh не устанавливать свой мониторинг работоспособности туннеля (с помощью loopback порта), а полагаться на то, что ssh сам определит разрыв и завершит работу (для этого мы в самом начале прописали в файле sshd.config опции KeepAlive и параметры ServerAliveInterval - интервал отправки keepalive проверок и ServerAliveCountMax - кол-во потерь при которых ssh считается разорванным).
  • -N значит, что никаких команд на ssh сервере к которому мы подключаемся выполняться не планируем, просто поднимаем туннель.
  • -f спрятать ssh в фон
Решение проблемы: Ubuntu не выключается

Больше половины подобных проблем в гугле имеют одну причину - залогинено несколько пользователей. И когда один из них пытается выключить комп, то Unity считает, что без спроса другого этого сделать нельзя и молча ждет :) Поэтому, если у вас не выключается Убунту - убедитесь, что все сеансы/десктопы закрыты.

В нашем же случае - доп сеансов не видно, но он есть - это нас VNC сервер с виртуальным десктопом. Т.к. он запущен под администратором, то обычный пользователь выключить его не может, а Unity считает что это полноценный рабочий стол, который открыт кем-то, где могут быть открыты окна с данными, которые еще не сохранены, поэтому выключать комп нельзя. Признайтесь, так ведь может быть на самом деле :) Но если мы хотим, чтобы наши пользователи легко без обращений к консоли выключали свои ПК, потанцевать с бубном придется нам.

Алгоритм решения: 1. разрешаем бесправному юзеру команду shutdown; 2. перехватываем событие хард кнопки power на системнике/ноуте и запускаем консольную команду выключения компа.

Разрешаем команду sudo без пароля

Чтобы не обременять пользователя, разрешим ему выполнять команду shutdown, от лица Super User и без запрашивания пароля. В Ubuntu 12.04 для этого добавим строку в файлы sudoers

pico /etc/sudoers.d/user_name

В нашем случае, имя пользователя которому нужно дать права - user_name. Для него создается отдельный файл (если еще не создан) в директории которая инклудится к файлу sudoers. Тут вы описываете все правила относительно пользователя user_name. Пропишем такую строку:

user_name ALL=(ALL) NOPASSWD: /sbin/poweroff, /sbin/reboot, /sbin/shutdown

Сохраняем файл и возвращаемся в консоль. Если такого файла там еще не было, то он был создан с неподходящими нам привилегиями, поменяем их командой:

chmod 0440 /etc/sudoers.d/user_name

Более простой, но неправильный способМожно использовать команду, которая заставит файл исполняться под пользователем владельцем (то есть root в нашем случае).

sudo chmod u+s /sbin/shutdown

Тогда вызов команды shutdown кем бы то ни было приведет к нужным результатам.

Готово. Но заставить рядового пользователя открывать консоль и прописывать команды - не дело. Повесим команду на хард кнопку компьютера.

Команда терминала при нажатии хард кнопки системника (power)

С этим в Ubuntu уже работает программка acpid. Отловим ивент и пропишем свой обработчик.

pico /etc/acpi/events/power-button

В файле ивента пропишем

event=button/power action=/etc/acpi/actions/power-button.sh %e

Теперь создаем файл обработчика команды

mkdir /etc/acpi/actions pico /etc/acpi/actions/power-button.sh

Со следующим содержанием:

#!/bin/sh case "$3" in *) shutdown -h now logger "ACPI TooPro force shutdown button" ;; esac

(PWRF - код кнопки выключения, может меняться, чтобы узнать ваш код, пропишите в консоли acpi_listen и нажмите нужную кнопку)

Разрешим запускать файл как программу

chmod +x /etc/acpi/actions/power-button.sh

SSH туннель на сервере с внешним IP

Для SSH-сервера воспользуемся прошивкой DD-WRT. Если вы хотите создать что-то подобное, то наверняка у вас есть роутер, да он вообще сейчас у многих дома стоит, чтобы не драться за компьютер с интернетом) И что самое приятное, на все популярные модели роутеров есть прошивка dd-wrt.

Прошиваем dd-wrt

Это самый простой пункт в статье. На странице http://www.dd-wrt.com/site/support/router-database вводите название своего роутера, выбираете нужный и скачиваете прошивку. Если вам повезло (как мне), и у вас в Вэб интерфейсе настройки роутера есть вкладка перепрошивки, то остальное - дело 5 минут, причем 4:30 из них вы будете плевать в потолок в ожидании появления сети :)Напомню, что у dd-wrt адрес 192.168.1.1, а не привычный 192.168.0.1.

Проблема! На данный момент именно для моего роутера TP-LINK TL-WDR3600 оказалось, что билд (build 21061), предложенный router-database имеет проблемы именно с SSH доступом (SSHd problem) %) У кого другие роутеры можете пропустить этот абзац или вернуться к нему если "ssh -vv 192.168.1.1" выдает процесс подключения, а в конце все же пишет "Connection closed by...". Если вы еще читаете, значит вам также "повезло" как мне, но вы не потратите на это пол дня :) Все что надо сделать - зайти на ftp и скачать свежую прошивку ftp://ftp.dd-wrt.com/others/eko/BrainSlayer-V24-preSP2/ (выберите текущий год, свежий билд и свой роутер), скачайте новую прошивку, перепрошейтесь.

Настраиваем SSH-туннель на DD-WRT

В разделе "Administration" включаем "SSH Management"В разделе "Services" в группе "Secure Shell" включаем SSHd, SSH TCP Forwarding. И ОТКЛЮЧАЕМ Password Login.Для безопасности будем пользоваться Public key authentication (методом аутентификации с использованием ключей).

Генерируем, прописываем ключи

В Ubuntu консоли пишем ssh-keygen, при запросе имени файла введите id_rsa. В Windows генерировать лючи можно с помощью puttygen.exe из пакета PuTTy, но об этом можно легко найти информацию в сети. И это не наш случай)

[email protected]:~> ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/user/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/user/.ssh/id_rsa. Your public key has been saved in /home/user/.ssh/id_rsa.pub. The key fingerprint is: 68:1c:50:0e:76:c1:d0:c7:9e:5e:5a:65:78:20:5c:fb [email protected]

Но в моем случае ключи легли в папку юзера, а не в .ssh, поэтому пришлось перенести их туда.Ключи были сгенерированы, но надо сказать системе, чтобы она начала их использовать:

ssh-add

Если у вас приватный файл ~/.ssh/id_rsa (/home/username/.ssh/id_rsa), то система его найдет и подтянет.

Теперь надо сказать роутеру свой публичный ключ (id_rsa.pub), берите содержимое этого файла (или скопируйте ответ на команду ssh-add -L) и вставьте в поле Authorized Keys в GUI роутера, раздел Services. Это будет строка вида

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAl1a3I7wWok2i3yMJPlCFBD8TLJrU3v33r9bOMWeFGdCj/QyqBlHExVEMHxgTtT28lscRNJLm8oVFwvOxk3oT575hdKGjW3TP3BahvLGQGWW8tLjV72xC4YWti+RdpLyP9vPhKupO4mjFyEKMAKOYQ3aIcRHOYCi56eysnS9U6gwplEKSVzMOvG0oLyHv7W9OyBmp6DrT6oRtn8ETbtNlbZ43hSXqzdxT34HcQu2JPdc1eQwdBq8oc0yrfwD+VmxYgo/oD2YyNRGxy0AgW55kkvTQNNqDqDPdQTirbvSYXZ/okgE10qltPlflIXv8NfhWUrxQv7Q==

Сохраните изменения и перегрузите роутер.

Проверяем подключение к роутеру по SSH

После того как мы создали ключ и скормили роутеру его публичную часть, можно проверить подключение. В консоли Ubuntu из локальной сети пишем:

ssh [email protected]

Вы должны увидеть ответь роутера DD-WRT и bash строку вида

[email protected] Name:~#

Поздравляю! Вы подключились к вашему роутеру по ssh и можете делать с ним все что захотите (если знаете команды :)).

Настраиваем обратный SSH-туннель

Про прямые туннели говорить особо нечего: вы делаете запрос на ssh-сервер и подключаетесь к нему, как вы это уже сделали, подключившись к своему роутеру. Но что делать, если у вас нет адреса сервера к которому надо подключиться, что если к нему вообще нельзя подключаться извне? Надо чтобы он создал подключение "наружу", и вы будете работать с этим подключением.

Для создания SSH-туннеля на ПКОфис

ssh -R 5555:localhost:5901 [email protected]

где RouterExternalIP - IP адрес вашего SSH-сервера (по совместительству - роутера), а 5901 - стандартный порт vncserver'а, который используется для дисплея #1. Для проверки проброса портов на роутере можно выполнить команду

netstat -ntlp | grep LISTEN
Используем созданный туннель с другого ПК

У нас есть порт 5555 на роутере, который перебрасывает запросы на порт ПКОфис:5901, где бы он не находился. Теперь надо осталось подключиться к роутеру и пробросить его порт 5555 на удобный для нас.

Для легкости это можно делать и с обычного Windows компьютера, используя PuTTY. Настроив профиль следующим образом:Host Name : RouterExternalIPProt: 22 (не забудьте поменять, если вы указывали другой порт в настройках роутера)SSH-Auth-Private key file for authentication: ...путь к вашему файлу с Private Key, созданному ранее...SSH-Tunnels: Source port 1: 5901 (для наглядности будем использовать привычный порт, на него будут транслироваться данные с router:5555)SSH-Tunnels: Destination: localhost:5555 (адрес с которого надо взять данные для трансляции на порт 5901, в данном случае destination localhost для роутера будет он сам и его порт 5555 будет транслироваться на local source)SSH-Tunnels: LOCAL, Auto (должно быть выбрано в радиобоксах под полем Destination)Жмем Add и в списке Forwartded ports мы должны увидеть это:L5901 localhost:5555

Далее жмем Open, для открытия SSH сессии. После подключения мы можем воспользоваться VNC клиентом для подключения к компьютеру ПКОфис. При этом запрос идет на локальный порт 5901, который переправляется на порт 5555 нашего роутера, который переправляет этот запрос на порт 5901 уже самого ПКОфис.

Итого для подключения из любой точки нам достаточно иметь флэшку с portable VNC клиентом, PuTTy и ключами доступа (private key). На будущее, если вы носите это все на флешке, я бы советовал поставить пароль на Private Key. Даже если вы её оставите в интернет клубе, "кулхацкеры" не смогут подключиться к вашим компьютерам.

Обращение к Apache (http) серверу, запущенному на ПКОфис

В дополнение лишние пару строчек могут помочь параллельно обращаться к http серверу, расположенному на офисном ПК за NAT. В моем случае, это актуально, т.к. Too Pro Shop (скрипт учета продаж) работает на базе CMS Drupal, и чтобы внести изменения в систему (цены, наличие, акции и т.п.) мне зачастую достаточно http доступа.

Для этого на ПКОфис (где установлен сервер) пробрасываем порт 80 на локальный порт ssh-сервера 2080

ssh -R 2080:localhost:80 [email protected]

А при подключении через PuTTy к этому же ssh-серверу, добавляем еще одно правило в port forwarding

L2080 localhost:2080

На свой порт 80 перебрасывать не будем, чтобы не лишиться своего интернета :)Теперь перейдя в браузере по адресу localhost:2080 вы попадаете на сервер localhost ПКОфис. Правда если вам нужно попасть на определенный сайт Apache сервера - придется прописывать hosts у себя в винде.

SSH туннель на VPS виртуальном сервере

Второй вариант, для тех, кто по богаче или каким то иным образом имеет доступ к VPS серверу. Устанавливаем на нем OpenSSH (хотя, вероятно, он уже там стоит).

Пользователь для ssh

Создаем нового пользователя, который не сможет выполнять команд, он нужен лишь для создания туннелей. И даем ему пароль.

useradd -M -s /bin/false limitedssh passwd limitedssh

В sshd_config (/etc/ssh/sshd_config) разрешим открывать порты на всех сетевых интерфейсах, добавив опцию GatewayPorts. Без неё туннель откроется на адресе 127.0.0.1 (со стороны сервера) и без дополнительных шаманств его использовать удаленно не получится.

GatewayPorts=yes

Перезапускаем ssh

service ssh restart

Разрешения фаервола

#разрешение уже установленных соединений iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #запрещение всех остальных пользователю limitedssh itpables -A OUTPUT -m owner --uid-owner `id -u limitedssh` -j REJECT # разрешение соединений в диапазон 5520-5599 itpables -I INPUT -p tcp --dport 5520:5599 -j ACCEPT #Остальные настройки (политика по-умолчанию, разрешение SSH, HTTP -трафика, для при): i#tpables -P INPUT DROP #itpables -A INPUT -p tcp —dport 22 -j ACCEPT #itpables -A INPUT -p tcp —dport 80 -j ACCEPT

Заключение

Хочется отметить, что использование роутера для ssh-тунелей может быть небезопасным, ведь приходится хранить приватный ключ на удаленных клиентах (ПКОфис'ы), и хотя доступ к файлу остается только во власти Администратора этих компьютеров все же не хочется разбрасываться Private Keys. Если организовывать все это через полноценный сервер, то можно сделать отдельного пользователя с возможностью поднимать только реверсивные ssh-туннели (которые были обращены к серверу), и не более. Тогда ssh доступ к этому бесправному акаунту будет бесполезен, но вам придется держать включенным лишний компьютер. Для владельцев нескольких сайтов перспектива более радужная, возможно, ваши сайты давно просят VPS и на нем вы также сможете развернуть свои службы. Подробнее о подобном способе тут: http://habrahabr.ru/post/137723/ (бесплатный аналог тимвьювера).

Благодарности, ссылки

Спасибо Андрею Каплуненко за шикарную статью http://kaplunenko.name/ubuntu-10-remote-desktop/ , часть которой использована тут. Алексею Жбанову за перевод статьи Jayson Broughton'а (http://rus-linux.net/MyLDP/sec/SSH-Tunneling.html). Еще хорошая статья для понимания ssh port forwarding http://avz.org.ua/wp/2010/06/29/putty-how-to-make-your-windows-useful/

P.S. Писал эту "солянку" из других статей сети больше не для людей, а для себя :) Т.к. постоянно забываю грабли на которые натыкался. А, вероятно, придется выполнять эти действия периодически. Да и в сети одной статьи для выполнения текущей задачи не было, поэтому пришлось компилировать.

www.toopro.org

Вариант обхода блокировок интернет ресурсов на работе. Настройка SSH туннеля.

В этой заметке я покажу вам, как можно организовать ssh туннель с компьютера под управлением ОС Windows. В качестве сервера может быть компьютер с Linux’ом на борту, либо ваш роутер. Если из коробки роутер не умеет SSH, то можно поставить кастомную прошивку и скорее всего в нем появится поддержка SSH.

Не всегда есть возможность создать полноценный VPN туннель, и далеко не всегда это надо. Например, если вы хотите с работы подключаться к дому, и если у вас на работе строгие правила по пользованию интернетом, то скорее всего у вас будут зарезаны порты по которым можно подключиться, так сказать, полноценными способами. Но в большинстве случаев это обходится использованием SSH.

Вы можете повесить его на порт 443 на домашнем устройстве (что бы этот порт слушался из интернета), и т.к. этот порт используется для HTTPS, его, как правило, не закрывают, и даже не фильтруют. Если фильтруют, то вы в принципе можете устроить скандал, если конечно не давали разрешениея на эту процедуру =), т.к. если его фильтруют, то могут посмотреть ваши строго персональные данные, например данные из Сбербанк-Онлайн, какие ни будь данные о здоровье и т.п..

Что то я отвлекся =) Вернемся к нашим попугаям.

Требование к установке SSH туннеля одно – вы должны подключиться по SSH до вашего устройства. Будем использовать Putty для подключения.

Качаем ]]>утилитку]]>, запускаем, вводим данные о подключении, указываем порт, в поле saved sessions вводим название нашего подключения, и жмем кнопку сохранить.

Жмем кнопку Open, принимаем сертификат, и вводим имя пользователя и пароль. После того как подключились, заходим в настройки (правой кнопкой по значку Putty – change settings).

Переходим в Connection – SSH – Tunnels. Здесь можно выбрать как мы хотим делать туннель. Если с локального компьютера на удаленную сеть, то в нужно выбрать Destination - Local, если же хотим подключаться с удаленного компьютера в локальную сеть, то нужно выбрать remote.

В поле port вводим порт, который будем использовать для подключения, нужно выбрать любой свободный порт, к примеру, 3002.

В поле destination вводим локальный адрес компьютера, к которому будем подключаться, например, у моей виртуальной машины с виндой адрес – 192.168.1.106. Этот адрес должен быть доступен с компьютера, к которому осуществляем подключение. Ну или если вы выбрали Remote, то он должен быть доступен с вашего компьютера на котором запущен Putty.

После адреса через двоеточие добавляем порт, на котором висит служба к которой планируется подключаться. Например для RDP порт по умолчанию 3389, для HTTP – 80, для VNC – 5900 и т.д.

В итоге я буду подключаться к домашней сети, по RDP к компьютеру Windows с адресом 192.168.1.106 –  выбираю Local, source port – 3002, destination – 192.168.1.106:3389. Жмем Add.

После этого переходим во вкладку Session, выбираем нашу сессию, и жмем кнопку сохранить, после чего жмем Apply.

Все, теперь, когда ваша сессия до домашней сети будет установлена, вы сможете подключаться к домашнему компьютеру. Для этого в адресе подключения вводим 127.0.0.1:3002.

Если вы настраивали туннель для удаленной сети (выбрали Remote) то на удаленном компьютере вводим этот же адрес, и вы подключитесь к рабочему компьютеру.

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

Для этого в туннелях нужно добавить правило – souce port – любой свободный, например 8080, адрес оставляем пустым, и назначение выбираем Dynamic.

После этого в браузере нужно настроить прокси, в Firefox для этого заходим в настройки – дополнительные – сеть – настройка параметров соединения Firefox с интернетом.

Здесь выбираем ручная настройка сервиса прокси, и в поле узел SOCKS указываем адрес – 127.0.0.1 и порт 8080, так же выбираем версию SOCKS – 5.

После этого все страницы, которые вы будете открывать в браузере, будут загружаться из вашей домашней сети.

Видео по теме:

                                               

www.sanglyb.ru

Подключение по SSH/SFTP

Этот документ поможет Вам выполнить подключение к Вашему виртуальному серверу по протоколам SSH и SFTP.

SSH (англ. Secure SHell — «безопасная оболочка») — сетевой протокол сеансового уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений (например, для передачи файлов). Сходен по функциональности с протоколами Telnet и rlogin, но, в отличие от них, шифрует весь трафик, включая и передаваемые пароли.

SFTP (англ. SSH File Transfer Protocol) — протокол прикладного уровня, предназначенный для копирования и выполнения других операций с файлами поверх надёжного и безопасного соединения. Существует заблуждение, что SFTP это просто обычный FTP, работающий поверх SSH. В действительности SFTP — это новый протокол, разработанный с нуля.

Данные для подключения к виртуальному серверу

Все данные, необходимые для подключения к Вашему виртуальному серверу по SSH, Вы можете получить на главной странице панели управления.

Нам необходимо знать IP адрес виртуального сервера (1) и пароль для пользователя root (2).

Получив необходимые данные для подключения, можно приступать непосредственно к процессу.

Подключение к виртуальному серверу по SSH из Mac OS X или Linux

Пользователи операционных систем Mac OS X или Linux могут использовать стандартное приложение terminal для подключения к виртуальному серверу по SSH протоколу. Для подключения к Вашему виртуальному серверу используйте следующую команду (измените 188.127.236.62 на IP адрес вашего виртуального сервера):

ssh [email protected]

Так выглядит процесс подключения к виртуальному серверу в терминале Unix или Mac OS X:

ssh [email protected] The authenticity of host '188.127.236.62 (188.127.236.62)' can't be established. RSA key fingerprint is 4f:e8:84:42:51:80:48:70:45:6c:69:47:79:e7:c0:56. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '188.127.236.62' (RSA) to the list of known hosts. [email protected]'s password: [[email protected] ~]#

Подключение к виртуальному серверу по SSH из Windows

Пользователи операционной системы Windows могут использовать для соединения с виртуальным сервером по протоколу SSH программу PuTTY. PuTTY - очень популярный telnet/ssh клиент, распространяется бесплатно.

Официальный сайт программы - http://www.chiark.greenend.org.uk/~sgtatham/putty/ Русскоязычный сайт поддержки - http://putty.org.ru/

После запуска программы вы увидите следущее окно:

Введите в поле “Host Name (or IP address)” IP-адрес Вашего виртуального сервера (на примере вводится helios.asu). Убедитесь, чтобы в пункте “Protocol” была выбрана радио-кнорка “SSH”.

Также, для того, чтобы каждый раз не вводить адресс и тип протокола вы можете сохранить сессию. Для этого введите ее название в поле “Saved Sessions” и нажмите кнопку “Save”.

После этого ваша сессия появится ниже в списке. Для того чтобы загрузить сохраненную сессию нужно выбрать ее из списка и нажать кнопку “Load”.

Для подключения нажмите кнопку “Open” внизу формы. Может появиться следующее сообщение:

Если вы уверены в том, что подключаетесь к нужному хосту, то нажмите кнопку “Yes/Да”. Появится следующее:

Введите свой логин (root), затем пароль. Перед вами консоль системы:

Для выхода введите:

exit

Подключение к виртуальному серверу по SFTP

Мы не рекомендуем клиентам Clodo использовать для передачи файлов на виртуальный сервер устаревший протокол FTP. Мы рекомендуем использовать более новый и безопасный протокол SFTP – протокол передачи данных поверх безопасного соединения по протоколу SSH. У протокола SFTP много плюсов:

Шифрование обеспечивает практически полную безопасность обмена данными с сервером Нет необходимости в дополнительном ПО на виртуальном сервере, в состав сервера OpenSSH уже входит SFTP-сервер. В любом из представленных на Clodo дистрибутивов не нужно ничего настраивать, всё работает «из коробки» Если Вы просто не можете жить без дополнительных настроек, то гибкость настройки SFTP сервера Вас поразит! При работе через SFTP, пользователи будут иметь те же права, что и на сервере, то есть, опять же, нет необходимости в дополнительной настройке. В общем плюсы можно перечислять бесконечно.

В этом руководстве мы кратко рассмотрим возможности популярных клиентов по работе с SFTP протоколом

Подключение по SFTP с помощью FileZilla

Официальный русскоязычный сайт FileZilla - http://filezilla.ru/

По умолчанию вам не нужно настраивать FileZilla, мы просто сразу начнём работать с программой.

Для того, чтобы подключиться к SFTP-серверу, введите IP-адрес вашего виртуального сервера в поле быстрого подключения (вместо example.com, как показано на рисунке ниже введите sftp://ip_адрес_вашего_vps). Введите порт подключения в соответствующее поле, для SFTP - 22. Введите имя пользователя и пароль, в соответствующие поля. Нажмите на кнопку “Быстрое соединение” или нажмите Enter для подключения.

Отметим, что панель быстрого подключения, как ясно из названия, приспособлена для быстрых подключений, т.е. у вас нет возможности редактировать список из 10-ти последних подключений. Для сохранения параметров подключения используйте Менеджер Сайтов.

Используйте Менеджер сайтов FileZilla для задания определённых параметров сайта и подключения к нужному SFTP-серверу. В Менеджере сайтов у вас есть возможность сохранять свои подключения и настраивать большее число параметров, чем доступно в панели быстрого подключения.

После подключения, в правой стороне главного окна будет отображён список файлов и директорий. Текущая директория будет показана в редактируемом поле в верхней части. Ниже отображается удалённое дерево директорий, а ещё ниже - содержимое текущей удалённой директории. Перейти в другую директорию можно тремя разными путями. Первый: сделайте двойной щелчок на директории в списке. Второй: кликните на директории в дереве. Последний способ: введите имя директории в редактируемое поле и нажмите Enter. Обратите внимание на директорию “..”, присутствующую практически во всех остальных директориях. Эта ссылка позволяет вам перейти к родительскому каталогу текущей директории.

Навигация на вашем компьютере работает почти так же, как и на сервере. Текущая локальная директория и дерево каталогов по умолчанию отображаются на левой стороне главного окна.

Подробную документацию по работе с FileZilla, Вы можете найти на официальном сайте по адресу http://filezilla.ru/documentation/Using

Условия использования документа

Материал представленный на данной странице может быть использован Вами по своему усмотрению. Разрешается копирование и распространение предоставленного материала без изменения содержания и без предварительного уведомления администрации Clodo.ru.

Мы будем признательны Вам за сообщения об ошибках в представленной документации и за предложения об улучшении документации. По этим вопросам необходимо обращаться по адресу [email protected] При обращении не забывайте указывать URL-адрес публикации.

lib.clodo.ru

Строим SSH-туннель - Здесь водится Эльф

Также данную статью можно найти здесь.

За основу для данной статьи был взят пост в ЖЖ по этому адресу: http://rezdm.livejournal.com/130735.html. Источниками также послужили следующие страницы по настройке SSHD: http://chinese-watercolor.com/LRP/printsrv/cygwin-sshd.html и http://chinese-watercolor.com/LRP/printsrv/vista-cygwin.txt. Статья посвящена созданию SSH-туннеля с целью обойти настройки корпоративного прокси-сервера. Изложенный ниже материал не претендует на точность терминов и предоставляется так, как это понял автор. Таким образом, могут иметь место некоторые неточности в описании производимых операций, однако это не станет помехой в достижении конечной цели. Что такое SSH, вы можете прочитать в Википедии: http://ru.wikipedia.org/wiki/SSH. Чтобы вы далеко не ходили, процитирую: «SSH (англ. Secure SHell — «безопасная оболочка») — сетевой протокол сеансового уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений (например, для передачи файлов). Сходен по функциональности с протоколами Telnet и rlogin, но, в отличие от них, шифрует весь трафик, включая и передаваемые пароли. SSH допускает выбор различных алгоритмов шифрования. SSH-клиенты и SSH-серверы доступны для большинства сетевых операционных систем.»Ниже рассматривается построение SSH-туннеля для Windows-систем. На домашнем компьютере должна быть установлена ОС Windows XP или выше. Рабочее место может быть на отдельном компьютере или на терминальном сервере, но также под управлением Windows. Конкретно в данной статье описана настройка для домашнего компьютера на Windows 7 и терминального рабочего места на Windows Server 2008.Прежде чем перейти, наконец, к изложению, добавлю, что статья рассчитана на компьютерно грамотных пользователей, поэтому некоторые моменты настройки не будут описываться слишком подробно.Итак, исходные условия: домашний компьютер, постоянно подключённый к интернету; корпоративный прокси-сервер с доступом в интернет; ваш рабочий компьютер с доступом в интернет через прокси-сервер. Ещё раз повторюсь, что вы можете работать терминально, то есть на сервере, но это практически ничего не меняет. Если у вас отключены Skype, ICQ, odnoklassniki, vkontakte, facebook и livejournal, то эта статья для вас.

Шаг 1. Настройка внешнего имени домашнего компьютераДля начала необходимо настроить домашний компьютер таким образом, чтобы он постоянно был доступен вам по определённому адресу. Если у него постоянный ip-адрес, тогда дело значительно упрощается. Мы же рассмотрим случай, когда ip-адрес регулярно меняется провайдером. Здесь нам поможет ресурс http://www.dyndns.org. Зарегистрируйтесь на нём и воспользуйтесь услугой Add Host Services, чтобы сопоставить текущий ip-адрес вашего роутера с именем, под которым он будет виден в интернете, например, homepc.dyndns.org. Если вы сидите за роутером, который поддерживает сервис Dynamic DNS, настройте его для взаимодействия с данным сайтом, в дальнейшем всё будет происходить автоматически. Если ваш роутер не поддерживает Dynamic DNS или у вас нет роутера (вы подключены к интернету через локальную сеть), скачайте на этом же сайте специальную программу (http://cdn.dyndns.com/windows/DynUpSetup.exe), которая будет делать то же самое, работая на вашем домашнем компьютере. Настройте её на взаимодействие с сайтом. При этом вы должны узнать свой реальный ip-адрес, то есть ip-адрес типа 192.168.1.56 или 10.0.0.50 не подойдёт, так как это внутренний ip-адрес вашей локальной сети. Но вообще говоря, если вы сидите в локальной сети за роутером, то у вас могут быть определённые проблемы с доступом к своему компьютеры извне.

Шаг 2. Поднимаем sshd-серверЭто самая сложная и ответственная часть всей операции. Нам необходимо поднять sshd-сервер и открыть на нём порт, через который и будет происходить соединение вашего рабочего места с вашим домашним компьютером. Вероятно, придётся для начала открыть несколько портов и выяснить, какой из них открыт на другой стороне. Используйте порт по умолчанию 22 только в крайнем случае. У меня в итоге получилось зацепиться по 443 порту, это хороший вариант. Остальные порты закройте. Имеются также другие аспекты безопасности, о которым мы поговорим позже.

1. Скачайте Cygwin (http://cygwin.com/setup.exe). С помощью него мы будем поднимать sshd-сервер, эмулирующий UNIX-среду.

2. Запустите установку под административными правами (в Windows 7 в контекстном меню выберите Запуск от имени администратора). Загруженный вами инсталлятор лишь служит для загрузки основного пакета, поэтому при первой установке выберите опцию Install from Internet. В последующем при переустановке можно будет выбирать и опцию Install from Local Directory. В качестве папки назначения (root directory) укажите c:\cygwin, а в качестве папки для дистрибутива (local package directory) - c:\cygwin\setup. Не бойтесь нажимать кнопки «Далее» и «Назад» в поисках описанных здесь опций. Выберите зеркало для загрузки дистрибутива.В открывшемся окне со списком компонентов понажимайте на кнопку View, пока надпись справа от неё не изменится на Full. Компоненты со значением Skip в столбце New не загружаются. Часть компонентов имеет значение Keep по умолчанию, и они загружаются. Некоторые компоненты придётся выбрать вручную. Для этого вы можете пользоваться поиском в верхней части окна. Дополнительно нам понадобятся openssh, tcp_wrappers, diffutils, zlib и mc: Midnight Commander visual shell. Для каждого из этих компонентов щёлкайте на слове Skip, пока в столбце справа не появится квадратик с крестиком. Слово Skip изменится на версию компонента.Установите Cygwin, включите опцию создания ярлыка на рабочем столе.

3. По окончании установки необходимо настроить переменные среды. В Windows 7 это можно сделать, если щёлкнуть на значке Компьютер правой кнопкой и выбрать Свойства. Далее щёлкнуть Изменить параметры, вкладка Дополнительно, кнопка «Переменные среды…». В Windows XP это достигается примерно тем же образом. Добавьте новую системную переменную с именем CYGWIN и значением ntsec tty (пояснение: ntsec пробел tty). Теперь найдите системную переменную Path и добавьте в конец значение ;c:\cygwin\bin.

4. Запустите установленный Cygwin

5. Наберите и выполните команду ssh-host-config

6. Отвечайте yes на все вопросы, в одном из пунктов, где не будет предложен вариант ответа, просто нажмите Enter. Вам также будет задан вопрос "Do you want to use a different name?" (Хотите ли вы использовать другое имя?), также ответьте на него yes.

7. Введите желаемые имя пользователя и обязательно пароль. При этом будет создан пользователь Windows с правами администратора, а также создана привязка данного пользователя к SSHD. Под данным пользователем будет производиться запуск sshd-сервера в качестве службы Windows. Подключиться по ssh данный пользователь сможет, но будет тут же отсоединён. Его назначение состоит исключительно в обеспечении работы службы.

8. Обеспечьте созданному пользователю дополнительные права с помощью последовательного выполнения командeditrights.exe -a SeAssignPrimaryTokenPrivilege -u имя_пользователяeditrights.exe -a SeCreateTokenPrivilege -u имя_пользователяeditrights.exe -a SeTcbPrivilege -u имя_пользователяeditrights.exe -a SeServiceLogonRight -u имя_пользователяПроверьте, что права добавлены с помощью командыeditrights -l -u имя_пользователя

9. Выполните команду cd /etc и запустите оболочку Midnight Commander с помощью команды mc. Найдите файлы hosts.allow и hosts.deny. Зайдите в изменение файла hosts.allow с помощью клавиши F4. Незначащая часть файла закомментирована с помощью символа #. Измените значащую часть таким образом, чтобы она пришла к видуALL : 127.0.0.1/32 : allow ALL : [::1]/128 : allowALL : PARANOID : DENYsshd : all

Завершите редактирование файла с помощью клавиши F10 и сохраните изменения. Теперь измените файл hosts.deny таким образом, чтобы он пришёл к видуALL : ALL EXCEPT localhost AND ‘192.168.1.1’ : DENY

Так же сохраните файл. В последнем случае под 192.168.1.1 имеется ввиду ip-адрес вашего роутера. Он может быть и другим, в этом случае укажите нужный ip-адрес. В том случае, если вы подключены к интернету не через роутер, а по локальной сети, то ip-адрес указывать не следует. Не выходите из Midnight Commander.

10. Измените порт, открытый в SSHD. Как мы и договаривались, сначала можно задать несколько портов для проверки их работы, а затем ненужные порты отключить. Для этого, найдите файл sshd_config, откройте его для изменения с помощью F4, найдите запись Port 22 и добавьте ниже нужные записи, например,Port 80Port 443

Как я и говорил, в итоге я оставил только 443 порт, а остальные удалил за ненадобностью. Если есть возможность устанавливать ssh-соединение по какому-либо другому порту, кроме 22, используйте её. Это увеличит безопасность вашего sshd-сервера от атак извне. Сохраните файл и выйдите из Midnight Commander. Информация взята здесь http://chinese-watercolor.com/LRP/printsrv/port443.html .

11. Запустите сервер с помощью команды net start sshd. В дальнейшем при необходимости можно будет останавливать и снова запускать сервер при проведение дополнительных настроек. Остановка сервера производится с помощью команды net stop sshd.

12. При необходимости дать доступ к SSHD новому пользователю создайте его в Windows с любыми требующимися правами. Выполните вход в Windows под данным пользователем. В Windows 7 это можно сделать с помощью функции операционной системы Сменить пользователя. Затем последовательно выполните в консоли Cygwin следующие командыmkpasswd -cl > /etc/passwdmkgroup --local > /etc/groupВыполняйте эти команды при любых изменениях в настройке Windows-пользователей (изменении прав, добавление, удалении, отключении, включении или смене паролей пользователей).Новый пользователь может понадобиться для вашего удалённого доступа по ssh, а также в том случае, если вы хотите позволить ещё кому-то использовать ssh-подключение. Данного пользователя можно будет существенно ограничить в правах для большей безопасности.

13. Проверьте работу SSHD. Для этого выполните одну из следующих командwhoamiилиssh localhostилиssh -vvv localhostилиssh "[email protected]"

Если ssh спросит "The authenticity of host xx.xx.xx.xx can't be established .... Are you sure you want to continue connecting (yes/no)?", ответьте yes. Это делается один раз для каждого нового имени, используемого вами для обозначения сервера, как то localhost или 127.0.0.1. Чтобы окончательно убедиться в работоспособности поднятого вами SSHD-сервера, последовательно выполните командыcd /cygdrive/c (сменить диск на С:)ls (вывести содержимое каталога)

Таким образом, SSHD-сервер настроен. Но парольная защита и работа на нестандартном для SSH порту лишь минимум защиты, которую вы должны обеспечить. Более подробно о других способах дополнительной защиты вы можете прочитать в конце статьи. Как и о широких возможностях и безопасности, которые вам предоставляет SSH.

Шаг 3. При необходимости настройте брандмауэр на вашем домашнем компьютере и NAT на вашем роутере, если вы подключены через роутер и он поддерживает NAT (переадресацию портов). NAT позволит «прокинуть» соединение от вашего роутера до вашего домашнего компьютера по нужным портам. Настройки NAT надо будет сделать для всех открытых вами для ssh-соединения портов. Что же касается брандмауэра, то в Windows XP встроенный брандмауэр обычно отключен, однако вы можете использовать сторонний брандмауэр. В Windows 7 встроенный брандмауэр обладает достаточно мощной функциональностью, поэтому обычно его не отключают. При включённом брандмауэре нужные порты должны быть открыты. Как я писал выше, у нас первоначально это будут порты 22, 80 и 443.

Шаг 4. Теперь скачайте ssh-клиент Putty (http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe). В общем случае достаточно x86 версии. Однако, как показала практика, в случае работы на терминальном сервере Windows Server 2008 необходима x64 версия клиента, которую можно скачать на этой странице https://splunk.net:444/page/putty_64bit. Положите Putty в любую папку на вашем рабочем компьютере, например, прямо на рабочий стол.

Шаг 5. Настройте Putty

1. Запустите Putty. Укажите в качестве Host Name имя, выбранное вами для своего домашнего компьютера на сайте http://www.dyndns.org. Возможно, вы выбрали homepc.dyndns.org. Если ваш домашний компьютер имеет постоянный ip-адрес и вы не настраивали Dynamic DNS, вы можете указать в качестве Host Name реальный ip-адрес вашего домашнего компьютера. Также укажите Port, например, попробуем для начала 443. Установите переключатель Connection type в положение SSH.

2. В разделе Connection – Proxy укажите настройки вашего рабочего прокси-сервераProxy type = HTTPProxy hostname = имя или ip-адрес вашего рабочего прокси-сервераPort = порт вашего рабочего прокси-сервераПри необходимости укажите корпоративные имя пользователя и пароль, с помощью которых вы подключаетесь к прокси-серверу.

3. В разделе Connection – SSH – Tunnels укажите Source port 3128, установите переключатели Dynamic и Auto и нажмите кнопку «Add». Порт D3128 должен появиться в списке Forwarded ports выше.

4. Вернитесь в раздел Session, введите в поле Saved Sessions имя новой сессии, например, S443, и сохраните настройки сессии с помощью кнопки Save. В будущем вы сможете сразу запускать эту сессию двойным щелчком левой кнопки мыши по её имени или просто подтягивать сохранённые настройки сессии с помощью кнопки Load.

5. Нажмите кнопку Open, чтобы открыть соединение. Если всё настроено правильно, вы должны увидеть командную строку, запрашивающую имя пользователя. Если Putty выдал ошибку, проверяйте настройки на стороне сервера, а также проверьте, подходит ли запускаемая версия Putty для вашей операционной системы. Для этого вернитесь к Шагу 4. Введя имя пользователя и пароль, подключитесь к вашему домашнему компьютеру. Проверьте, что на вашем рабочем месте открыт порт 3128. Для этого запустите командную строку Windows и введите команду netstat –an. Вы должны увидеть что-то типа tcp 127.0.0.1:3128 LISTEN.

6. Теперь можно в настройках браузера, ICQ- или Skype-клиента прописать в качестве прокси-сервера адрес 127.0.0.1 и порта 3128. Сделать это надо для типа прокси SOCKS5, остальные типы прокси необходимо оставить пустыми (и адрес и порт). После того, как настройки сделаны, проверьте, например, работу браузера. Для этого запустите любой ранее недоступный вам сайт. Из замеченных проблем только работа с данным механизмом ICQ-клиента RnQ.

Результат

Как отмечает пользователь ЖЖ rezdm: «Де-факто теперь у Вас есть свой собственный прокси сервер, и Вы можете сконфигурировать его для любой программы, которая умеет пользоваться SOCKS5. Все Ваши запросы через этот мини-прокси в результате в шифрованном виде пойдут с Вашего рабочего места до вашего домашнего компьютера, а дальше уже в интернет». Кроме того, вы можете использовать ssh-соединение для удалённого управления своим компьютером, а также настроить SFTP и как передавать файлы на свой домашний компьютер, так и забирать их с него. Другие типы подключений к домашнему компьютеры также можно пустить через безопасный ssh-канал. Обо всех возможностях, которые даёт SSHD, вы можете прочитать здесь: http://chinese-watercolor.com/LRP/printsrv/cygwin-sshd.html. И не забудьте о дополнительной безопасности, которую вам нужно обеспечить вашему SSHD-серверу. Цитируя Википедию:1. Запрещение удаленного root-доступа.2. Запрещение подключения с пустым паролем или отключение входа по паролю.3. Выбор нестандартного порта для SSH-сервера.4. Использование длинных SSh3 RSA-ключей (2048 бит и более). Системы шифрования на основе RSA считаются надёжными, если длина ключа не менее 1024 бит.5. Ограничение списка IP-адресов, с которых разрешен доступ (например, настройкой файервола).6. Запрещение доступа с некоторых потенциально опасных адресов.7. Отказ от использования распространенных или широко известных системных логинов для доступа по SSH.8. Регулярный просмотр сообщений об ошибках аутентификации.9. Установка систем обнаружения вторжений (IDS, Intrusion Detection System - http://ru.wikipedia.org/wiki/IDS).10. Использование ловушек, подделывающих SSH-сервис (honeypots).

masterelf.livejournal.com


Смотрите также