- Удобное удаленное управление консолью linux из-под Windows
- Что мы получим в итоге?
- Конфигурация
- Tmux
- Mosh
- Cygwin
- ConEmu
- Дополнение
- Как удаленно управлять сервером Ubuntu с помощью SSH
- Установка SSH-соединения
- Необходимые условия
- Установка сервера OpenSSH
- Обновление базы данных пакетов
- Настройка сервера SSH
- Проверка состояния службы SSH
- Доступ к серверу Ubuntu Linux через SSH-клиент
- Подключение к Ubuntu из Windows с помощью SSH-клиента Putty
- Похожие записи:
Удобное удаленное управление консолью linux из-под Windows
Итак, друзья, некоторое подмножество нас (людей) так или иначе испытавает необходимость удаленного управления компьютером (как правило, сервером) на linux (способ может сработать и в BSD, и в Mac OS X, но я не пробовал) при помощи ssh. Другое подмножество использует Windows в качестве ОС на основной рабочей машине. К пересечению этих подмножеств обращена моя статья.
Полезности, ради которых затевается всё вселье:
1. Сохранение подключения при обрыве связи. Этот пункт для меня самый важный и сыграл решающую роль в том, чтобы взяться за настройку такой системы. Дело в том, что я живу в общежитии с очень-очень нестабильным интернетом, и обрывы связи у меня (в плохие дни) могут происходить поминутно. А putty требует последовательности действий, чтобы переподключиться каждый раз
2. Сохранение сессии, включая текущую директорию, историю команд и вывода. Зачастую, единственной задачей при подключении к серверу стоит: зайти в одну и ту же директорию и написать git pull. Чтобы каждый раз не вспоминать путь к этой директории, нужно сохранение сессии
3. Терминал поддерживает вкладки. Самое главное, что данный терминал можно использовать также и для cmd, и для PS, и для git bash консоли. Поэтому не придется держать несколько разных терминалов открытыми.
4. Плюсы tmux: многооконность в одной сессии и split
Рецепт успеха будет включать несколько пунктов:
- Терминал — ConEmu code.google.com/p/conemu-maximus5
- Менеджер сессий — tmux tmux.sourceforge.net
- Коннектор между клиентом и сервером — mosh mosh.mit.edu
- Запуск *nix приложений под windows — cygwin www.cygwin.com
Так же для проведения всех манипуляций нам также понадобится подобный набор софта:
- Putty или другой ssh клиент;
- Удаленный сервер (я использую ubuntu на aws, хотя это не имеет существенного значения).
Что мы получим в итоге?
В итоге мы получим терминал с возможностью доступа к удаленной консоли. При обрыве соединения (обрыве интернета, смене ip-адреса, изменении маршрутизации, неустойчивом соединении, засыпании ноутбука etc) не придется переподключаться, а при переподключении не будет теряться контекст работы.
Конфигурация
Настраивать нашу систему мы будем поэтапно, начнем с удаленного сервера. Подключаемся к нему по ssh и ставим…
Tmux
Tmux — менеджер сессий, как говорится, screen на стероидах. К моему дистрибутиву tmux уже шел в комплекте, а если нет, то ставим его:
Или же собираем из исходников:
git clone git://git.code.sf.net/p/tmux/tmux-code tmux cd tmux sh autogen.sh ./configure && make
Очень хороший способ запустить tmux:
tmux attach || tmux new — делая так, вы сперва пытаетесь подключиться к уже существующему серверу tmux, если он существует; если такого ещё нет — создаёте новый.
После этого вы попадаете в полноценную консоль.
Ctrl+b d — отключиться. (Точно так же вы отключитесь, если прервётся соединение. Как подключиться обратно и продолжить работу — см. выше.)
В одной сессии может быть сколько угодно окошек:
Ctrl+b c — создать окошко;
Ctrl+b 0. 9 — перейти в такое-то окошко;
Ctrl+b p — перейти в предыдущее окошко;
Ctrl+b n — перейти в следующее окошко;
Ctrl+b l — перейти в предыдущее активное окошко (из которого вы переключились в текущее);
Ctrl+b & — закрыть окошко (а можно просто набрать exit в терминале).
В одном окошке может быть много панелей:
Ctrl+b % — разделить текущую панель на две, по вертикали;
Ctrl+b » — разделить текущую панель на две, по горизонтали (это кавычка, которая около Enter, а не Shift+2);
Ctrl+b →←↑↓ — переходить между панелями;
Ctrl+b x — закрыть панель (а можно просто набрать exit в терминале).
Недостаток — непривычным становится скроллинг:
Ctrl+b PgUp — вход в «режим копирования», после чего:
PgUp, PgDown — скроллинг;
q — выход из «режима копирования».
В конфиг, который находится в ~/.tmux.conf, добавляем следующее:
В первой строчке значится, что при попытке подключения, если нет активной сессии, создаётся новая. Вторая строчка включает поддержку мыши, а третья задаёт размер истории.
Mosh
Mosh в нашей связке — это система, которая обеспечивает бесперебойность соединения. При обрыве соединения программа ждет, пока connectivity восстановится и продолжает работу с места остановки. Так же помогает и при медленном/нестабильном соединении.
Устанавливаем из исходников, чтобы получить версию, которая поддерживает все нужные фичи:
git clone https://github.com/keithw/mosh.git cd mosh/ sudo apt-get build-dep mosh ./autogen.sh && ./configure && make sudo make install
Специальная конфигурация не требуется.
Cygwin
Теперь переходим к клиентской части.
Cygwin — альтернативная реализация linux api, которая позволяет использовать linux утилиты из-под windows. Ставится с официального сайта (https://cygwin.com/install.html). У меня стоит версия x86_64. Скачиваем, ставим.
При выборе пакетов (помимо основных) нужно отметить mosh и ssh:
Конфигурация не требуется.
ConEmu
Последний пункт — ConEmu. Замечательный терминал под windows. Поддерживает кучу возможностей, таких как:
- вкладки и split-scren’ы;
- работа с консольными приложениями, использующими консольное API;
- гибкая настройка и управление;
- работа с цветами;
- … и многое другое, подробно про этот терминал можно почитать в статье разработчика.
Вот как выглядит задача запуска cygwin:
Создайте такой пункт у себя, при этом, вам, возможно, придется заменить путь на ваш путь установки:
C:\cool\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico -
Сохраняем, закрываем настройки, выбираем наш cygwin в выпадающем меню рядом с плюсиком в правом верхнем углу.
Теперь нам нужно добиться подключения по ssh к нашему серверу.
У меня команда выглядит так:
key2014.pem — мой ssh приватный ключ доступа к инстансу в aws. Возможно, его стоит скопировать с диска windows (который монтируется в /cygdrive) в корневую папку.
Следующий этап — подключение через Mosh:
mosh @ --ssh=\"ssh -i key2014.pem -p 22\" -p 55505 -- tmux a
55505 — UDP порт, который я предварительно открыл для входящих соединений в правилах безопасности в админке aws. Теперь все соединения будут вестись только через него (помимо начального установления связи — оно идёт через 22 порт).
tmux a — команда, которая выполняется при подключении к серверу (attach к работающей сессии tmux).
Проверяем. Работает? Великолепно! Последняя задача — создать новый Task в ConEmu.
C:\cool\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico /bin/bash -l -c "mosh @ --ssh=\"ssh -i key2014.pem -p 22\" -p 55505 -- tmux a"
Думаю, всё понятно. Обратите внимание на слеши перед кавычками. Они отличают степень вложенности кавычек.
Ну вот, пожалуй и всё. Теперь, когда мы хотим подключиться к серверу, запускаем ConEmu, тыкаем по стрелочке рядом с плюсиком и выбираем наш Task.
Дополнение
Еще одно упрощение, которое я использую — я добавил все необходимые мне Task’и для вызова напрямую из Totcmd:
P. S.
Предлагаю всем, дочитавшим эту статью, высказывать предложения, что еще такого можно включить в эту схему. Спасибо за внимание.
P. P. S.
Данная статья является компиляцией других статей, взятых из разных мест и собственных наработок. Единственная статья, которую я помню — http://xakep.ru/komfort-shell/
UPD 2022: хоть статье и много лет, и я уже давно пользуюсь linux — трюк из mosh+tmux все еще актуален 🙂
Как удаленно управлять сервером Ubuntu с помощью SSH
Вам часто может потребоваться доступ к удаленным серверам для администрирования, управления и устранения неполадок, и существует несколько способов сделать это. Вы можете использовать telnet для входа на удаленные серверы; FTP позволяет передавать файлы между различными серверами. Однако эти программы недостаточно безопасны для подключения к критическим серверам. SSH, secure shell — это криптографический сетевой протокол, с помощью которого вы можете получить безопасный доступ к сетевым сервисам через незащищенную сеть. SSH позволяет получить доступ к серверам через Терминал и различные функции командной строки. Это полезно, если вы хотите получить доступ к серверу и управлять им удаленно, используя безопасный способ.
В этой статье я опишу, как можно удаленно управлять сервером Linux с помощью SSH.
Для этой статьи я использую следующие машины:
Установка SSH-соединения
Прежде чем установить безопасное удаленное соединение с сервером Ubuntu с помощью SSH, необходимо выполнить некоторые основные требования.
Необходимые условия
Ниже перечислены некоторые предварительные условия:
- Удаленный сервер должен быть включен и иметь стабильное сетевое подключение.
- Вам потребуется IP-адрес сервера.
- Удаленный сервер должен быть доступен через этот IP-адрес. Вы можете проверить это с помощью команды Ping.
- Инструменты SSH-сервера и SSH-клиента должны быть установлены в ОС сервера и клиента соответственно.
- Вам потребуется имя пользователя и пароль удаленного сервера.
- Брандмауэр не должен блокировать соединение.
Установка сервера OpenSSH
Для удаленного управления сервером Ubuntu по SSH вам понадобится программное обеспечение SSH-сервера. Однако, прежде чем приступить к установке OpenSSH, сначала обновите список пакетов, чтобы получить самые актуальные репозитории.
Обновление базы данных пакетов
Нажмите Ctrl + Alt + T, чтобы запустить Терминал в Ubuntu. Введите следующую команду в Терминале для обновления базы данных пакетов.
После обновления репозиториев выполните эту команду в Терминале, чтобы проверить наличие обновления для установленных пакетов.
После обновления пакетов выполните следующую команду в Терминале:
sudo apt-get install openssh-server
Настройка сервера SSH
Теперь вам нужно выполнить некоторые основные и необходимые настройки SSH-сервера в файле ssh_config. Для этого выполните следующую команду в Терминале, чтобы открыть ssh_config:
sudo nano /etc/ssh/sshd_config
Здесь вы можете выполнить различные настройки конфигурации. Сейчас мы выполним только базовую и начальную настройку, как показано на скриншоте ниже. Раскомментируйте следующую строку в файле ssh_config:
Под номером порта добавьте строку MaxAuthTries. Вы можете ввести здесь любое число, которое будет разрешать максимальное количество попыток входа в систему.
Закончив с базовой конфигурацией, сохраните файл и выйдите из редактора Nano.
Проверка состояния службы SSH
Чтобы проверить состояние SSH-сервера, запущен он или нет, вы можете выполнить следующую команду в Терминале:
Вышеприведенная команда подтверждает, что служба SSH активна и запущена.
Теперь SSH-сервер настроен на прием удаленных соединений с различных компьютеров с помощью SSH-клиента.
Если служба SSH не запущена, вы можете запустить ее вручную, выполнив следующую команду в Терминале:
Вы также можете остановить службу SSH, выполнив следующую команду в Терминале:
Доступ к серверу Ubuntu Linux через SSH-клиент
Вы можете получить доступ к серверу Linux через SSH-клиент в ОС Linux или Windows:
Если вы используете операционную систему Linux, вы можете получить доступ к SSH серверу с помощью программы Terminal.
Нажмите Ctrl+Alt+T для запуска программы Terminal. Выполните команду в следующем синтаксисе для доступа к удаленному серверу:
ssh [удаленный сервер] [номер порта].
Где [remote server] — имя или IP удаленного сервера, а [Port Number] — удаленный порт для SSH-соединений.
Также вы можете ввести команду вместе с именем пользователя удаленного сервера в следующем синтаксисе:
ssh [имя пользователя]@[удаленный сервер] [номер порта]
Где [имя пользователя] — это имя пользователя удаленного сервера.
Введите yes, когда появится сообщение с вопросом, хотите ли вы продолжить подключение. Это добавит пользователя в список известных хостов. При следующем подключении это сообщение больше не появится.
Когда появится запрос на пароль, введите пароль удаленного пользователя.
Теперь вы подключены к удаленному серверу. Вы можете запустить любую команду и использовать ее так же, как и при доступе к локальному серверу.
Подключение к Ubuntu из Windows с помощью SSH-клиента Putty
Если вы используете операционную систему Windows, вы можете использовать putty в качестве SSH-клиента.
Установите putty в вашей операционной системе Window. Чтобы запустить Putty, введите putty в строке поиска Windows и выберите putty.exe из наиболее подходящих результатов.
В окне конфигурации putty, в категории сеансов, введите IP-адрес удаленного сервера в поле с надписью Имя хоста (или IP-адрес).
В разделе Тип соединения выберите радиокнопку SSH. Если вы используете порт, отличный от стандартного порта 22, обязательно измените его, в противном случае оставьте стандартный порт 22. Затем нажмите кнопку Открыть, чтобы разрешить соединение.
Откроется терминал с запросом на вход. Введите имя пользователя и пароль пользователя удаленного сервера.
После успешного входа на удаленный сервер вы можете выполнить любую команду для управления им.
Вот как вы можете легко подключить серверы Linux с помощью SSH. Теперь вы можете управлять и администрировать сервер удаленно. SSH — это не только безопасный метод подключения к серверу, но и удобный.