Клиенты для создания безопасного SSH соединения в Андроид
Клиенты для создания безопасного SSH соединения в Андроид
Разработчики часто используют в работе SSH клиенты для мобильных операционных систем. Было создано немало SSH agent для различных операционок, но в рамках данного материала мы рассмотрим только SSH решения, заточенные под Android. Рассматривать платные клиенты при существующих бесплатных аналогах, мы не станем.
ConnectBot – клиент для удаленного управления SSH на Андроид
ConnectBot является самым старым из всех существующих клиентов, ведь даже до сих пор имеет поддержку устройств с трекболами, хотя с появлением Android 4.х их ставить прекратили. Правда, если верить Google, разработчики забыли о своем детище с октября 2010 года, отчего приложение имеет неизменный рейтинг 4,7. При первом запуске становится ясно, что SSH клиент создавался еще под самые первые устройства с Android 1.х/2.х, но это не мешает ему работать на более свежих версиях операционной системы.
Клиент для Android имеет приятную особенность в виде возможности быстрого создания подключения (например, к серверам Ubuntu). Пользователю необходимо лишь выбрать протокол (local, telnet или SSH), а после вписать в текстовое поле имя юзера, имя хоста и нажать Return.
В остальном приложение имеет не очень много настроек (все в основном сводится к аппаратным клавишам и screen/wi-fi lock).
При попытке подключения к серверу (например, к Ubuntu), ConnectBot предложит ввести пароль, но в свойствах хоста можно будет также указать ключ, а публичную его часть отправить в буфер обмена и послать, к примеру, самому себе по почте, чтобы впоследствии закинуть в папку ключей на сервер (например, Ubuntu).
Как только вы подключите agent к server, откроется терминал, небольшая панелька с тремя клавишами внизу (esc, ctrl и кнопка вызова электронной клавиатуры) и контекстное меню. Если сделать свайп по левой части экрана, то будут отображены клавиши для управления страницами, а если правую – откроется скроллинг буфера обмена. Правда, мы не нашли возможности нажимать клавишу alt, да и отобразить стрелочки мы тоже не смогли. Все это было реально на клавиатурных устройствах, но их времена давно прошли. Собственно, как и этого agent, ведь разработчики давно забыли за него.
Получить client, который обычно подключается к server Ubuntu, можно по URL: http://connectbot.ru.uptodown.com/android
JuiceSSH – agent SSH на Android
JuiceSSH – полноценный мобильный agent для Android с поддержкой Telnet и Mosh. Есть удаленное управление server, возможность работать сразу с несколькими фоновыми сеансами (например, Ubuntu), поддерживается двухфакторная аутентификация, шифрование и др.
Ключевые возможности клиент JuiceSHH:
- удаленное управление server (например, Ubuntu);
- всплывающая клавиатура с массой символов;
- настройка шрифта при помощи качельки громкости;
- поддержка внешней клавиатуры;
- поддержка IPv6;
- генератор ключей RSA;
- локальный терминал Android;
- возможность копирования и вставки в сессиях;
- двухфакторная аутентификация;
- agent поддерживает подключение по группам;
- поддержка UTF-8;
- открытие URL в обозревателе;
- работает из коробки с Ubuntu, CentOS, Mint и другими продуктами Linux.
JuiceSHH также имеет дополнительный набор PRO опций, которые доступны после покупки в самом приложении: интеграция с Amazon, синхронизация между несколькими устройствами, шифрование бекапов AES-256, виджет для быстрого доступа к часто используемым соединениям, привлекательные темы для терминал, Zlib сжатие для улучшения SSH сессий.
SSH Tunnel – клиент для выхода в SSH через tunnel
SSH Tunnel – отличное приложение, позволяющее выходить в сеть через tunnel. Удаленное управление программы полностью безопасно, а сама она была разработана на базе Connectbot и Dropbear. SSH Tunnel требует наличия root прав доступа.
Принцип работы SSH Tunnel заключается в следующем: туннель создаётся путем SSH соединения и используется для шифрования тунеллированных данных. Такое решение полностью защищает передачу данных в интернете; незашифрованный трафик протокола шифруется на одном конце SSH соединения и расшифровывается уже только на другом.
Если у вас стоит выбор, использовать SSH Tunnel или VPN туннель, то выбор стоит отдавать второму варианту, ведь преимуществ SSH Tunnel перед VPN не имеет. А вот VPN предлагает универсальность и поддержку многими программами по стандартам. Если у вас нет возможности держать SSH сервер, то для создания SSH Tunnel необходимо арендовать сервер за отдельную плату у любого хостера, который предоставляет такую услугу.
В настройках SSH Tunnel есть много полей, но нас интересуют лишь некоторые:
- host – сюда нужно вписать IP-адрес или домен, благодаря которому работает ваш SSH;
- port – стандартно порт идет 22-й;
- user – сюда прописываем имя юзера от SSH;
- password – сюда прописываем пароль;
- use socks proxy – активация динамического перенаправления портов;
- auto connect – автоматическое подключение туннеля при подключении к интернету;
- auto reconnect – авто переподключение к SSH серверу в случае обрыва;
- global proxy – если это поле активно, то весь трафик будет проходить через ssh туннель.
Теперь по кнопке «Tunnel Switch» можно будет запустить процесс туннелирования.
Как настроить SSH-туннелирование (перенаправление портов)
SSH-туннелирование или перенаправление портов SSH — это метод создания зашифрованного SSH-соединения между клиентом и сервером, через которое могут ретранслироваться порты служб.
Перенаправление SSH полезно для передачи сетевых данных служб, использующих незашифрованный протокол, например VNC или FTP , доступа к контенту с географическим ограничением или обхода промежуточных межсетевых экранов. По сути, вы можете перенаправить любой TCP-порт и туннелировать трафик через безопасное соединение SSH.
Существует три типа переадресации портов SSH:
- Перенаправление локального порта. — Перенаправляет соединение с клиентского хоста на хост-сервер SSH, а затем на порт хоста назначения.
- Перенаправление удаленного порта. — Перенаправляет порт с хоста сервера на хост клиента, а затем на порт хоста назначения.
- Динамическая переадресация портов. — Создает прокси-сервер SOCKS, который обеспечивает связь через ряд портов.
В этой статье объясняется, как настроить локальные, удаленные и динамически зашифрованные туннели SSH.
Перенаправление локального порта
Перенаправление локального порта позволяет вам перенаправить порт на локальном (ssh-клиент) компьютере на порт на удаленном (ssh-сервере), который затем перенаправляется на порт на конечном компьютере.
В этом типе пересылки клиент SSH прослушивает данный порт и туннелирует любое соединение с этим портом на указанный порт на удаленном сервере SSH, который затем подключается к порту на конечном компьютере. Конечный компьютер может быть удаленным SSH-сервером или любым другим компьютером.
Перенаправление локальных портов в основном используется для подключения к удаленной службе во внутренней сети, такой как база данных или сервер VNC.
В Linux, macOS и других системах Unix, чтобы создать переадресацию локального порта, передайте параметр -L клиенту ssh :
Используются следующие параметры:
- [LOCAL_IP:]LOCAL_PORT — IP-адрес и номер порта локального компьютера. Если LOCAL_IP опущен, клиент ssh привязывается к локальному хосту.
- DESTINATION:DESTINATION_PORT — IP или имя хоста и порт конечного компьютера.
- [USER@]SERVER_IP — удаленный пользователь SSH и IP-адрес сервера.
В качестве LOCAL_PORT можно использовать любой порт с номером больше 1024 . Порты с номерами меньше 1024 являются привилегированными и могут использоваться только пользователем root. Если ваш SSH-сервер прослушивает порт, отличный от 22 (по умолчанию), используйте параметр -p [PORT_NUMBER] .
Имя хоста назначения должно разрешаться с сервера SSH.
Допустим, у вас есть сервер базы данных MySQL, работающий на машине db001.host во внутренней (частной) сети, на порте 3306, который доступен с машины pub001.host , и вы хотите подключиться к базе данных с помощью клиента MySQL на локальном компьютере. сервер. Для этого вы можете перенаправить соединение, используя следующую команду:
После запуска команды вам будет предложено ввести пароль удаленного пользователя SSH. После входа вы войдете на удаленный сервер, и туннель SSH будет установлен. Также рекомендуется настроить аутентификацию на основе ключей SSH и подключаться к серверу без ввода пароля.
Теперь, если вы db001.host:3306 базы данных на pub001.host компьютере pub001.host 127.0.0.1:3336 , соединение будет перенаправлено на db001.host:3306 MySQL db001.host:3306 через компьютер pub001.host который действует как промежуточный сервер.
Вы можете перенаправить несколько портов в несколько пунктов назначения с помощью одной команды ssh. Например, у вас есть другой сервер базы данных MySQL, работающий на компьютере db002.host , и вы хотите подключиться к обоим серверам со своего локального клиента, вы должны запустить:
Чтобы подключиться ко второму серверу, вы должны использовать 127.0.0.1:3337 .
Когда целевой хост совпадает с SSH-сервером, вместо указания IP-адреса или имени хоста назначения вы можете использовать localhost .
Допустим, вам нужно подключиться к удаленному компьютеру через VNC, который работает на том же сервере и недоступен извне. Вы бы использовали следующую команду:
Параметр -f указывает команде ssh работать в фоновом режиме, а -N не выполнять удаленную команду. Мы используем localhost потому что VNC и SSH-сервер работают на одном хосте.
Если у вас возникли проблемы с настройкой туннелирования, проверьте конфигурацию удаленного SSH-сервера и убедитесь, что для параметра AllowTcpForwarding не задано значение no . По умолчанию пересылка разрешена.
Перенаправление удаленного порта
Перенаправление удаленного порта противоположно перенаправлению локального порта. Это позволяет вам перенаправить порт на удаленном (ssh-сервере) компьютере на порт на локальном (ssh-клиент) компьютере, который затем перенаправляется на порт на конечном компьютере.
В этом типе пересылки сервер SSH прослушивает данный порт и туннелирует любое соединение с этим портом на указанный порт на локальном клиенте SSH, который затем подключается к порту на конечном компьютере. Конечный компьютер может быть локальным или любым другим.
В Linux, macOS и других системах Unix для создания удаленного перенаправления портов передайте параметр -R клиенту ssh :
Используются следующие параметры:
- [REMOTE:]REMOTE_PORT — IP-адрес и номер порта на удаленном SSH-сервере. Пустой REMOTE означает, что удаленный SSH-сервер будет связываться со всеми интерфейсами.
- DESTINATION:DESTINATION_PORT — IP или имя хоста и порт конечного компьютера.
- [USER@]SERVER_IP — удаленный пользователь SSH и IP-адрес сервера.
Удаленная переадресация портов в основном используется для предоставления доступа к внутренней службе кому-либо извне.
Допустим, вы разрабатываете веб-приложение на своем локальном компьютере и хотите показать его предварительный просмотр своему коллеге-разработчику. У вас нет общедоступного IP-адреса, поэтому другой разработчик не может получить доступ к приложению через Интернет.
Если у вас есть доступ к удаленному серверу SSH, вы можете настроить переадресацию удаленного порта следующим образом:
Приведенная выше команда заставит ssh-сервер прослушивать порт 8080 и туннелировать весь трафик с этого порта на ваш локальный компьютер через порт 3000 .
Теперь ваш коллега-разработчик может ввести the_ssh_server_ip:8080 в своем браузере и просмотреть ваше замечательное приложение.
Если у вас возникли проблемы с настройкой перенаправления удаленного порта, убедитесь, что для параметра GatewayPorts установлено значение « yes в конфигурации удаленного сервера SSH.
Динамическая переадресация портов
Динамическая переадресация портов позволяет создать сокет на локальном (ssh-клиентском) компьютере, который действует как прокси-сервер SOCKS. Когда клиент подключается к этому порту, соединение перенаправляется на удаленный компьютер (сервер ssh), который затем перенаправляется на динамический порт на конечном компьютере.
Таким образом, все приложения, использующие прокси-сервер SOCKS, будут подключаться к серверу SSH, и сервер будет перенаправлять весь трафик в его фактическое место назначения.
В Linux, macOS и других системах Unix для создания динамической переадресации портов (SOCKS) передайте параметр -D клиенту ssh :
Используются следующие параметры:
- [LOCAL_IP:]LOCAL_PORT — IP-адрес и номер порта локального компьютера. Если LOCAL_IP опущен, клиент ssh привязывается к localhost.
- [USER@]SERVER_IP — удаленный пользователь SSH и IP-адрес сервера.
Типичным примером динамической переадресации портов является туннелирование трафика веб-браузера через SSH-сервер.
Следующая команда создаст туннель SOCKS на порту 9090 :
После того, как туннелирование установлено, вы можете настроить свое приложение для его использования. В этой статье объясняется, как настроить Firefox и браузер Google Chrome для использования прокси-сервера SOCKS.
Перенаправление портов должно быть настроено отдельно для каждого приложения, которое вы хотите туннелировать трафик через него.
Настроить SSH-туннелирование в Windows
Пользователи Windows могут создавать туннели SSH с помощью клиента PuTTY SSH. Вы можете скачать PuTTY здесь .
Запустите Putty и введите IP-адрес SSH-сервера в поле Host name (or IP address) .
В меню « Connection разверните SSH и выберите « Tunnels . Установите переключатель Local для настройки локального, Remote для удаленного и Dynamic для динамической переадресации портов.
- При настройке локальной переадресации введите локальный порт пересылки в поле « Source Port а в поле « Destination введите хост и IP-адрес назначения, например localhost:5901 .
- Для перенаправления удаленного порта введите порт перенаправления удаленного SSH-сервера в поле Source Port а в поле Destination введите целевой хост и IP-адрес, например localhost:3000 .
- При настройке динамической пересылки введите только локальный порт SOCKS в поле Source Port .
Нажмите кнопку « Add , как показано на изображении ниже.
Вернитесь на страницу Session чтобы сохранить настройки, чтобы не вводить их каждый раз. Введите имя сеанса в поле « Saved Session и нажмите кнопку « Save .
Выберите сохраненный сеанс и войдите на удаленный сервер, нажав кнопку « Open .
Появится новое окно с запросом вашего имени пользователя и пароля. После того, как вы введете свое имя пользователя и пароль, вы войдете на свой сервер, и будет запущен туннель SSH.
Настройка аутентификации с открытым ключом позволяет вам подключаться к вашему серверу без ввода пароля.
Выводы
Мы показали вам, как настроить туннели SSH и пересылать трафик через безопасное соединение SSH. Для простоты использования вы можете определить туннель SSH в файле конфигурации SSH или создать псевдоним Bash, который будет настраивать туннель SSH.
Если вы столкнулись с проблемой или хотите оставить отзыв, оставьте комментарий ниже.
Протокол SSH для чайников: что это и как работает простыми словами
Аббревиатуру SSH встречали многие, но не все понимают, что это такое, как им пользоваться и как он настраивается.
SSH — это Secure Shell (безопасная оболочка) ; это специальный протокол для передачи данных в безопасном режиме. Он очень часто применяется для удаленного управления компьютерами и устройствами по сети.
SSH — что это такое
Протокол SSH-1 начал свою историю в 1995 году. Изначально он имел достаточное количество брешей и проблем, поэтому уже в 1996 году была презентована его следующая версия. SSH-1 и SSH-2 — это два разных протокола, которые не являются совместимыми между собой. На сегодняшний день, когда речь идет о SSH, подразумевается SSH-2. Вторая версия протокола до сих пор работает и за это время претерпела небольшие изменения.
Чистый SSH — это коммерческий продукт, который можно использовать только на платной основе. В бесплатном распространении есть одна из версий SSH — это OpenSSH. Именно протокол OpenSSH наиболее популярен среди разработчиков, так как он бесплатен, очень безопасен и распространяется с открытым исходным кодом.
На что способен SSH
можно подключат ь ся к удаленному компьютеру и работать с ним через командную строку;
возможно осуществить шифрование данных, применяя различные алгоритмы;
он передает любые данные по зашифрованному каналу, в том числе и аудио — или виде оф айлы;
может сжать файлы для их дальнейшего шифрования и транспортировки по сети;
обеспечивает надежную транспортировку данных и предотвращает несанкционированное подключение к каналу передачи информаци и с целью ее перехвата.
Что нужно, чтобы использовать протокол SSH
SSH-сервер. Именно сервер отвечает за коммуникацию и аутентификацию удаленных компьютеров. Аутентификация на сервере может происходить тремя путями: по IP-адресу клиента, по публичному ключу, по паролю клиента. В качестве SSH-сервера могут выступать следующие программы: OpenSSH, freeSSHd, lsh-server, WinSSHD, MobaSSH и др.
SSH-клиент. Это программное обеспечение , которое нужно для интеграции с SSH-сервером и для выполнения на нем различных действий. Например: взаимодействие с различными файлами, редактирование файлов, контроль процесса функционирования SSH, архивирование файлов, взаимодействие с базами данных. В качестве SSH-клиентов могут выступать: Vinagre, ZOC, lsh-client, SecureCRT, SSHWindows, OpenSSH, Xshell, i-SSH, PuTTY и мн . д р.
Как безопасно применять SSH
нужно исключить удаленный доступ с рут-правами к серверу или клиенту;
обязательно нужно менять стандартный порт для SSH;
нужно пользоваться длинными RSA-ключами;
необходимо контролировать IP-адреса , которым разрешен доступ к клиенту и серверу;
контролировать ошибки аутентификации, чтобы вовремя определить брут-форс;
инсталлировать дополнительные системы защиты;
применять специальные ловушки, которые подделывают SSH-сервер.
Что такое протокол SSH на практике
Не всем нужен протокол SSH — это точно. Если вы начинающий веб-мастер с одни м единственным сайтом , т о , скорее всего , применять SSH вам не имеет смысла. Этот протокол начинает служить верой и правдой, когда нужно много файлов передавать между устройствами. Например, вы очень часто обмениваете файлы с виртуальным хостингом по FTP, заливая туда проекты. В этом случае SSH-протокол подойдет как нельзя лучше.
Правда есть один н ю анс : SSH-протокол должен поддерживать хостинг-провайдер, которым вы пользуетесь. Большинство современных хостингов уже поддерживают этот протокол. Если ваш тоже поддерживает, то вы сможете оценить достоинства и скорость SS H п о сравнению с тем же FTP.
Заключение
Теперь вы знаете, что такое SSH. Это удобный протокол для обмена информацией между удаленными устройствами, который позволяет дистанционно редактировать файлы с одного компьютера на другом. Идеальная пара для применения протокола SSH — это ваш компьютер и виртуальный хостинг, куда вы заливаете проекты.
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Основные команды в SSH используем PuTTY
Для управления VDS/VPS серверов а так же физических серверов, необходимо знать основные команды:
Самые часто употребляемые
reboot — перезагрузка сервера.
mc — файловый менеджер, аналог norton commander
df -h — отображение занятого/свободного места на VDS
top — просмотр загрузки системы, список активных процессов (выход — клавиша q)
mysqldump -u имя_пользователя_БД -pпароль_пользователя_БД имя_бд > /полный/путь/дамп.sql — создание дампа дамп.sql
mysql -u имя_пользователя_БД -pпароль_пользователя_БД -D имя_бд < /полный/путь/дамп.sql — заливка дампа дамп.sql в базу данных mysql
cd /путь/ — перейти в каталог /путь/
wget http://www.сайт.ру/большой_файл.zip — загрузка файла ‘большой_файл.zip’ напрямую из сети, в текущий каталог VDS, не используя вашу локальную машину.
apachectl restart — перезапуск apache
apachectl startssl — запуск apache
apachectl stop — остановка apache
/usr/local/etc/rc.d/mysql-server restart — перезапуск mysql
/usr/local/etc/rc.d/mysql-server start — запуск mysql
/usr/local/etc/rc.d/mysql-server stop — остановка mysql
Команды выполняются в shell клиенте PuTTY
ssh user@host — подключится к host как user
ssh -p port user@host — подключится к host на порт port как user
ssh-copy-id user@host — добавить ваш ключ на host для user чтобы включить логин без пароля и по ключам
Файловые команды
ls – список файлов и каталогов
ls -al – форматированный список со скрытыми каталогами и файлами
cd dir – сменить директорию на dir
cd – сменить на домашний каталог
pwd – показать текущий каталог
mkdir dir – создать каталог dir
rm file – удалить file
rm -r dir – удалить каталог dir
rm -f file – удалить форсированно file
rm -rf dir – удалить форсированно каталог dir *
cp file1 file2 – скопировать file1 в file2
cp -r dir1 dir2 – скопировать dir1 в dir2; создаст каталог dir2, если он не существует
mv file1 file2 – переименовать или переместить file1 в file2. если file2 существующий каталог — переместить file1 в каталог file2
ln -s file link – создать символическую ссылку link к файлу file
touch file – создать file
cat > file – направить стандартный ввод в file
more file – вывести содержимое file
head file – вывести первые 10 строк file
tail file – вывести последние 10 строк file
tail -f file – вывести содержимое file по мере роста, начинает с последних 10 строк
Управление процессами
ps – вывести ваши текущие активные процессы
top – показать все запущенные процессы
kill pid – убить процесс с id pid
killall proc – убить все процессы с именем proc *
bg – список остановленных и фоновых задач; продолжить выполнение остановленной задачи в фоне
fg – выносит на передний план последние задачи
fg n – вынести задачу n на передний план
Права доступа на файлы
chmod octal file – сменить права file на octal, раздельно для пользователя, группы и для всех добавлением:
? 1 – исполнение (x)
chmod 777 – чтение, запись, исполнение для всех
chmod 755 – rwx для владельца, rx для группы и остальных.
Дополнительные опции: man chmod.
ssh user@host – подключится к host как user
ssh -p port user@host – подключится к host на порт port как user
ssh-copy-id user@hos t – добавить ваш ключ на host для user чтобы включить логин без пароля и по ключам
Поиск
grep pattern files – искать pattern в files
grep -r pattern dir – искать рекурсивно pattern в dir
command | grep pattern – искать pattern в выводе command
locate file – найти все файлы с именем file
Системная информация
date – вывести текущую дату и время
cal – вывести календарь на текущий месяц
uptime – показать текущий аптайм
w – показать пользователей онлайн
whoami – имя, под которым вы залогинены
finger user – показать информацию о user
uname -a – показать информацию о ядре
cat /proc/cpuinfo – информация ЦПУ
cat /proc/meminfo – информация о памяти
man command – показать мануал для command
df – показать инф. о использовании дисков
du – вывести “вес” текущего каталога
free – использование памяти и swap
whereis app – возможное расположение программы app
which app – какая app будет запущена по умолчанию
Архивация
tar cf file.tar files – создать tar-архив с именем file.tar содержащий files
tar xf file.tar – распаковать file.tar
tar czf file.tar.gz files – создать архив tar с сжатием Gzip
tar xzf file.tar.gz – распаковать tar с Gzip
tar cjf file.tar.bz2 – создать архив tar с сжатием Bzip2
tar xjf file.tar.bz2 – распаковать tar с Bzip2
gzip file – сжать file и переименовать в file.gz
gzip -d file.gz – разжать file.gz в file
ping host – пропинговать host и вывести результат
whois domain – получить информацию whois для domain
dig domain – получить DNS информацию domain
dig -x host – реверсивно искать host
wget file – скачать file
wget -c file – продолжить остановленную закачку
Установка пакетов
Установка из исходников:
dpkg -i pkg.deb – установить пакет (Debian)
rpm -Uvh pkg.rpm – установить пакет (RPM)
Клавиатурные сочетания
Ctrl+C – завершить текущую команду
Ctrl+Z – остановить текущую команду, продолжть с fg на переднем плане или bg в фоне