Назад | Перейти на главную страницу

Как удаленно управлять своими Linux-системами?

ПРИМЕЧАНИЕ. Я задал этот вопрос сегодня утром в отношении блоков EC2, но получил только обратные ссылки на инструменты для запуска и остановки экземпляров, поэтому я перефразирую ...

У меня есть несколько компьютеров с Linux, которые выполняют ночные задания по обработке одного из моих проектов. Время от времени мне нужно будет входить, вносить некоторые изменения в код, настраивать некоторые вещи, перемещать файлы и т. Д.

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

Используете ли вы какую-либо форму оконной системы и эквивалент удаленного рабочего стола для доступа к ящику, или это все из командной строки? Управление удаленными ящиками Windows тривиально, поскольку вы можете просто удаленно подключаться к рабочему столу и передавать файлы по сети. Есть ли аналог этого в мире Linux?

Вы вносите изменения в конфигурационный файл / настраиваете скрипт непосредственно на машине? Или у вас есть что-то настроенное на вашем локальном компьютере для удаленного редактирования этих файлов? Или вы просто редактируете их удаленно, а затем переносите при каждом сохранении?

Как вы перемещаете файлы между сервером и локальной средой? FTP? Какой-то подключенный диск через VPN?

Мне действительно нужно получить некоторые передовые методы управления этими ящиками. Мы будем приветствовать любые предложения по устранению боли!

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

Редко? Что ты имеешь в виду? Простите за разглагольствования, но отвергать ssh, vim и wget как болезненные ощущения почти оскорбительно. Из вашего вопроса я сделал вывод, что вы в основном программист на своей дневной работе, так что я вроде понимаю вопрос. Но, честно говоря, я бы не стал нанимать администратора Linux, которому не нравится ни один из трех упомянутых вами инструментов.

Используете ли вы какую-либо форму оконной системы и эквивалента удаленного рабочего стола для доступа к ящику, или это все из командной строки? Управление удаленными ящиками Windows тривиально, поскольку вы можете просто удаленно подключаться к рабочему столу и передавать файлы по сети. Есть ли аналог этого в мире Linux?

Для задач администратора я никогда не использую среду X. Он вам не нужен, он будет занимать только системные ресурсы, и в большинстве случаев они мешают, а не помогают. Большинство инструментов конфигурации с графическим интерфейсом (ну, практически все, на самом деле) предлагают только подмножество параметров конфигурации, которые вы можете установить в файле конфигурации с помощью vim.

Управление ящиком Linux не менее тривиально, чем управление ящиком Windows. Просто нужно время, чтобы получить достойный набор навыков.

А эквивалент передачи файлов по сети? Много. scp, sftp, ftp, nfs, cifs / smb (протоколы обмена файлами Windows), а также некоторые другие.

Вы вносите изменения в конфигурационный файл / настройку скрипта прямо на машине? Или у вас есть что-то настроенное на вашем локальном компьютере для удаленного редактирования этих файлов? Или вы просто редактируете их удаленно, а затем переносите при каждом сохранении?

Зависит от того, что я делаю. Большинство вещей я делаю непосредственно в файлах конфигурации на машине (для ящиков для разработки и тестирования), а затем помещаю файл в канал конфигурации на нашем сервере Satellite, после чего я развертываю файл напрямую на всех серверах (для производственных ящиков ). На самом деле vim - это сокровище. То есть когда вы узнаете, как правильно им пользоваться.

Как вы перемещаете файлы между сервером и локальной средой? FTP? Какой-то подключенный диск через VPN?

scp полностью и, возможно, немного sftp, и я предлагаю вам тоже. Никогда и никогда не используйте FTP для перемещения конфиденциальных файлов (например, файлов конфигурации) по общедоступной сети. Я не использую подключенную сеть, потому что, опять же, все, что мне нужно, находится на сервере. Если вы имеете в виду файлы c, а не файлы конфигурации, я обычно использую что-то вроде svn или git, а затем помещаю свои изменения в поле.

Мне действительно нужно получить некоторые передовые методы управления этими ящиками. Мы будем приветствовать любые предложения по устранению боли!

Вы их уже используете: ssh, scp, wget и vim. Это не боль. Могут появиться зубные боли, пока вы выясняете, насколько они сильны. Но, возвращаясь к аналогии с Windows, я чувствую, что мне серьезно мешает, когда мне приходится использовать Windows. Для вас все наоборот. Это просто то, к чему ты привык. Так что дайте ему немного времени, и оно придет к вам.

Вы уже упоминали ssh, vim и wget, что важно и идеально. Некоторые дополнительные инструменты, которые могут облегчить жизнь:

1. Экран GNU / byobu

«GNU Screen - это бесплатный мультиплексор терминала, который позволяет пользователю получить доступ к нескольким отдельным сеансам терминала внутри одного окна терминала или сеанса удаленного терминала. Он полезен для работы с несколькими программами из командной строки и для отделения программ от запущенной оболочки. программа." (Со страницы GNU_Screen в Википедии)

Основным преимуществом является то, что у вас может быть один или несколько виртуальных терминалов, которые находятся в том же состоянии, в котором вы их оставили, когда вернулись (т.е. повторно войти через ssh). Это также хорошо, когда у вас по какой-то причине обрывается соединение.

Screen работает независимо от программного обеспечения, которое вы используете для подключения к приставке (оно находится на сервере), поэтому хорошо сочетается с putty или большинством других программных терминалов.

В этой статье показано, что с ним можно делать: http://www.pastacode.de/exnding-gnu-screen-adding-a-taskbar/en/

Хорошая альтернатива - byobu, которая хорошо настроена в некоторых дистрибутивах: http://byobu.co/


2. Midnight Commander

Консольный графический инструмент для просмотра файлов и каталогов и управления ими.

Также может выполнять безопасную удаленную передачу. Есть встроенный FISH и FTP клиент.

Это означает, что у вас есть 2 текстовых окна бок о бок в консоли командной строки, и одно показывает ваше удаленное окно, а другое, куда вы его подключаете (который также может быть вашей локальной системой). Затем вы можете перемещаться по обеим файловым системам бок о бок и отмечать или исследовать отдельные файлы или файлы в древовидной структуре, а также копировать или перемещать их между местоположениями. FISH безопасен, FTP - нет. Очень мощный и простой для новичков.


3. rsync

Для быстрой, безопасной и надежной передачи файлов и синхронизации между разными местоположениями


4. VCS

Использование распределенной системы контроля версий, такой как bazaar, mercurial или git, для обновления кода. Github или Bitbucket предлагают коммерческий хостинг кода, но это не обязательно, вы также можете эффективно использовать его на своих машинах.

Джозеф Керн: не могли бы вы рассказать, как именно использовать git для организации удаленной конфигурации?


5. Терминальные клиенты

В unix-подобных системах они уже есть, в Windows вы можете использовать Putty, Tera Term, Mind Term или Pandora. Или выполните установку cygwin и ssh из окон cygwin terminel в удаленные блоки (что имеет больше преимуществ, но это вопрос того, что вы предпочитаете).


6. Туннелирование и перенаправление портов

Может быть полезно безопасно перенаправить определенные порты на локальный компьютер. Например, вы можете перенаправить порт mysql TCP 3306 или postgres TCP 5432 и установить какой-нибудь инструмент администрирования базы данных локально.

Вы можете строить туннели из машин Windwos с помощью putty (или командной строки на основе его младшего брата plink), с помощью cygwin и Mindterm также можно выполнять переадресацию портов. Если вы находитесь локально на unix-подобной машине, вы можете использовать ssh odr plink для создания такого туннелирования.

Чтобы создать более стабильное и постоянное туннелирование для различных портов, я рекомендую OpenVPN. Метод туннелирования «pre-shared-key» от точки к точке установить не так уж и сложно.


7. Иметь локальную unix-подобную систему.

Если ваш локальный компьютер - это Mac, он у вас уже есть, вы можете открыть локальную оболочку. Когда ваша рабочая станция работает на базе Windows, может быть полезно создать локальный unix-подобный сервер, который находится в той же локальной сети. Это может быть другая машина в другой комнате, подключенная к тому же маршрутизатору или коммутатору. Или, если вам нужна только одна машина, вы можете установить бесплатный сервер vmware и создать виртуальную машину, желательно с той же операционной системой, что и ваша удаленная машина. Установите на нем сервер самбы, и вы можете «использовать сетевые ресурсы» самбы со своего рабочего стола.

Если вы используете ssh-сервер на локальном сервере и открываете для него 22-й порт на своем маршрутизаторе, вы можете подключиться по ssh к своей локальной системе, когда находитесь на улице.

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

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


8. X Remote GUI

Если вы работаете в Linux, как система физически, также можно запускать приложения с графическим интерфейсом пользователя на серверах Linux, которые рисуют графический интерфейс на вашем локальном компьютере. Это может быть графический инструмент для сравнения файлов или что угодно.

Хотя это не очень распространено и в случаях msot нет необходимости использовать программное обеспечение с графическим интерфейсом для администрирования Linux Box, в некоторых случаях вы можете найти его полезным, если сможете.

На удаленном компьютере убедитесь, что в / etc / ssh / sshd_config существует эта строка:

X11Forwarding Yes

Перезагрузите ssh-сервер с помощью

/etc/init.d/sshd restart

Тогда в следующий раз, когда вы войдете в систему с

ssh -X me@remote-box

У вас будет X-туннель, попробуйте установить xclock на удаленном сервере для тестирования и выполните xclock в только что упомянутом сеансе ssh. Простые x-часы для целей тестирования должны появиться в вашем графическом интерфейсе Linux.

Это также возможно на Mac, если вы устанавливаете локальную среду X.


9. Если у вас есть несколько похожих ящиков или задач: используйте инструмент настройки системы.

Если у вас есть ферма серверов или вы выполняете большие облачные развертывания с множеством избыточных или иным образом равных или похожих машин, вы можете использовать это.

Вероятно, это не имело бы смысла, если бы большинство ящиков были индивидуальными или имели разные операционные системы или разные версии.

Есть несколько инструментов:


10. Разверните контейнеры приложений с docker

Это еще один шаг вперед. Docker - это проект с открытым исходным кодом, который автоматизирует развертывание приложений внутри программных контейнеров: https://www.docker.io


11. Используйте Google Compute Engine с автоматическим управлением развертыванием.

https://cloud.google.com/products/compute-engine/

Google предлагает виртуальные машины Linux с очень интересными возможностями. Вы можете быстро развернуть большие кластеры виртуальных машин с помощью инструментов, включая RESTful API, интерфейс командной строки и веб-консоль. Вы также можете использовать такие инструменты, как RightScale и Scalr, чтобы автоматически управлять своим развертыванием.

Вам нужно подумать о таком средстве управления конфигурацией системы, как Chef.

Я почти не управляю системами вручную через сеансы SSH. Я храню весь код для веб-приложений и проектов в репозитории исходного кода, к которому я могу получить доступ из систем, которые их запускают, скажем, веб-сайтов на EC2. При работе в облаке очень важно иметь автоматизированную инфраструктуру.

Базовый рабочий процесс выглядит так. Во-первых, для кода приложения и данных конфигурации:

  • Клонировать / оформить код из GitHub или другого репозитория для управления версиями.
  • Редактируйте код в моем любимом редакторе на моей локальной рабочей станции / ноутбуке.
  • Зафиксируйте изменения, отправьте в центральный репозиторий.

Для конфигурации добавьте:

  • Установите файлы конфигурации в том месте, где Chef может их обслуживать.
  • Запустите запуск Chef-client или дождитесь интервала на граничных узлах.

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

Я [почти] никогда не редактирую вручную файлы конфигурации, данные приложений или что-либо еще в удаленных системах напрямую. Изменения выполняются через мой локальный репозиторий и отправляются мастеру. Я знаю, что мои системы будут каждый раз настраиваться правильно, независимо от того, придется ли мне убить экземпляр и перезапустить его.

Файлы, необходимые для конфигурации, обслуживаются прямо с сервера Chef, который представляет собой просто веб-приложение (merb, работающее в Apache + Passenger). Доступ для клиентов контролируется через авторизацию openid.

Моя конфигурация включает в себя хуки в Nagios и Munin, поэтому я также получаю мониторинг и отслеживание тенденций без необходимости вручную делать что-либо для их настройки.

В наши дни передовой опыт основан на автоматическом управлении конфигурацией. Если вы все еще делаете что-то вручную, значит, вы слишком много работаете.

Если вам нужен красивый графический интерфейс для работы с управлением файлами через SSH из окон Windows, взгляните на WinSCP: http://winscp.net

Я не администрирую какие-либо экземпляры EC2, но в целом, если у меня есть более одной машины, выполняющей роль, я попытаюсь написать сценарий для выполнения работы со всеми подобными блоками вместо внесения изменений в коробку .

Я бы хотел начать использовать Puppet (http://reductivelabs.com/products/puppet/), потому что это делает системное администрирование более похожим на управление конфигурацией. У меня еще не было свободных циклов, чтобы взглянуть на это подробно, но я слышал очень хорошие вещи.

Управление удаленными ящиками Windows тривиально, поскольку вы можете просто удаленно подключаться к рабочему столу и передавать файлы по сети. Есть ли аналог этого в мире Linux?

Это троллинг?

Удаленное администрирование оконных ящиков нетривиально. Удаленное администрирование ящиков unix связано с тем, что они были разработаны для удаленного управления и для работы в сети. Для Windows это было крепление к системе, которая не была разработана с нуля для работы в сети.

Это анекдотично, но, судя по опыту различных компаний, соотношение сервера и системного администратора для Linux-боксов намного выше, чем для Windows. Просто потому, что автоматизация в Windows - нетривиальная задача, а графический интерфейс всегда будет медленнее, чем создание сценариев. При этом есть администраторы Windows, которые могут сделать инфраструктуру Windows простой в управлении, но такие администраторы очень редки.

Все необходимые вам инструменты доступны по умолчанию в каждом дистрибутиве Linux. Если вам нужен графический вход, продолжайте и сделайте это, он просто тратит впустую процессор и память и вызовет те же проблемы, что и с Windows. И, как уже было сказано, для более чем горстки коробок вы должны рассмотреть puppet, chef, cfengine или один из многих других доступных инструментов.

Что не так с ssh, vim и wget? На мой взгляд, драгоценности, неизвестные большинству пользователей Windows. :-)

Иногда я использую gVim удаленно по FTP или SFTP.

Если вы предпочитаете использовать графический интерфейс на компьютере с Linux, вы можете запустить X-сервер (см. Cygwin для одного) на вашем локальном хосте и перенаправить свой дисплей обратно через ваше соединение ssh.

Я никогда не считал, что решение VPN стоит затрат или хлопот по администрированию Linux.

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

Вы говорите, что используете SSH для управления «несколькими» ящиками. Я настоятельно рекомендую ClusterSSH для написания одних и тех же команд для всех сразу (при условии, что они имеют схожую цель).

http://www.linux.com/learn/tutorials/413853:managing-multiple-linux-servers-with-clusterssh

Использование так же просто, как "cssh -l username clustertername", которое откроет множество окон uxterm, которыми вы можете управлять всеми сразу или по отдельности. Кластер определяется списком IP-адресов в файле конфигурации. Насколько я знаю, не хватает только поддержки X.

РЕДАКТИРОВАТЬ: Я перешел на Терминатор, так как макет с несколькими терминалами можно легко сохранить и восстановить, плюс вы получите 10 одновременных X-туннелей, если это необходимо. Облегчает одновременную настройку серверных и клиентских компьютеров.

Кроме того, Fabric удобен при обновлении программного обеспечения на моих клиентах, в основном заменяя все эти zip / scp / unzip / cp вещи.

Не забывайте об использовании Webmin, веб-интерфейс для системного администрирования Unix / Linux.

Я использую:

  • SSH - для доступа
  • SCP - Копирование файлов
  • SSHFS - Если мне нужно смонтировать диск или каталог
  • git - Сохранение конфигов

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

В настоящее время все мои репозитории git локальны. В будущем перенесу конфиги в удаленные репозитории.

Администрирование систем Windows всегда было «тяжелым»: то есть, необходима полная оконная среда, которая требует либо присутствия на месте, либо приложения, загружающего сеть, такого как Remote Desktop или VNC.

UNIX был разработан с учетом сетевых требований, поэтому инструменты предназначены для работы по сети, а не для того, чтобы выглядеть красиво. На сервере UNIX никогда не должна быть настроена оконная среда (обычно X11).

Минималистичный интерфейс SSH, wget и vim гораздо лучше подходит для работы в сети - vi фактически был разработан для работы на модемной линии со скоростью 300 бод.

На самом деле существуют графические инструменты, которые помогут вам работать с удаленными системами UNIX и Linux (wsp был одним из них; gvim может быть другим).

Обычный способ администрирования систем UNIX - это войти в систему и работать на самой машине. Нет необходимости перемещать файлы только для их редактирования. Единственное, что нужно помнить, - это убедиться, что конфигурация правильная, и по возможности протестировать ее.

Я часто использую Комодо через SFTP ссылка на сайт.

Для простых изменений SSH и SCP помогут. Если необходимо внести изменения на большем количестве машин, вам следует обратить внимание на систему управления конфигурацией. Он сможет запускать / останавливать службу, изменять содержимое файлов конфигурации и проверять, находятся ли ваши системы в известном состоянии.

Я предпочитаю использовать Bcfg2 но Кукольный и CFEngine также популярны.

У меня Bcfg2 работает ежечасно на всех моих серверах, хотя его также можно запустить вручную. Существует центральный репозиторий с контролем версий для всех файлов конфигурации системы, поэтому мы можем отслеживать любые внесенные изменения. Система работает очень хорошо и является огромным шагом вперед от входа на серверы вручную и настройки вещей.

SSH большую часть времени выполняет свою работу. Изучение доступных вам инструментов командной строки стоит вашего времени. Если есть инструменты с графическим интерфейсом, которые я хочу использовать, я просто использую VNC.

Для перемещения файлов я обычно подключаю общий ресурс CFIS / SAMBA к своей локальной машине.

Если вам нужен удаленный графический доступ, вы почти наверняка захотите настроить VNC.

Если вы хотите редактировать файлы удаленно через SSH, у вас есть несколько вариантов:

  • если вы используете инструменты KDE (Kate, KDevelop), используйте рыбы протокол.
  • настроить FUSE чтобы (автоматически) смонтировать удаленный том.
  • Использовать muCommander (кроссплатформенный, графический mc) для перемещения файлов вперед и назад
  • некоторые текстовые редакторы (например, TextWrangler на Mac) поддерживают передачу файлов по ssh и перемещение их вперед и назад

После того, как вы отредактировали файл, просто используйте SSH, скажем, для начала компиляции.

Еще одна вещь, которую следует учитывать, - это использование системы контроля версий. БЗР действительно хорошо; его легко настроить и легко использовать. Вы можете работать на одном компьютере, отправлять обновления, загружать обновления на свой сервер, выполнять команды и возвращаться, если что-то пойдет не так.

Командная строка поверх ssh для Linux (поскольку они даже не установили X11) и сочетание ssh и ARD для моих компьютеров Apple.

Обратите внимание, что я никогда не использую Apple Remote Desktop для передачи файлов, потому что AFP через TCP смехотворно медленный; Я просто использую scp.

Определенно PuTTY; Помимо клиента ssh, существует также клиент SCP на базе Windows.

Я подключаюсь к ящику по ssh и вношу изменения в командной строке и с такими редакторами, как vi / nano, когда это просто. Для более сложных изменений в файле, таких как одновременное редактирование нескольких исходных кодов, я использую BBEdit в Mac OS X. Он может получить доступ к файловой системе с помощью SCP. Я уверен, что есть такой редактор для windows и linux. sshfs это способ удаленного доступа к вашей файловой системе с помощью ssh.

Мне всегда хватало SSH. Есть и другие варианты. X11 - это, по сути, удаленный рабочий стол, хотя он по своей сути небезопасен, поскольку сам по себе не зашифрован. Однако его можно туннелировать через соединение SSH (и вы получаете то преимущество, что вам не нужно открывать дополнительные порты). Это, конечно, предполагает, что на сервере установлена ​​X-среда.

SFTP (который является ftp поверх SSH, поэтому снова не нужно открывать дополнительные порты) можно использовать для размещения файлов на сервере, а не для их извлечения. Хороший клиент sftp для Windows можно найти по адресу http://filezilla-project.org/

SSH для доступа, scp, если мне нужно передать ограниченное количество файлов. Общие каталоги через SMBFS / SAMBA, если нам ДЕЙСТВИТЕЛЬНО нужно. Обычно это пустая трата времени. Некоторые из наших менее компетентных в * nix сотрудников используют webmin, заблокированный для доступа к локальной подсети через HTTPS.

Shellinabox

Оболочка в коробке (произносится как shellinabox) - это веб-эмулятор терминала, созданный Маркусом Гучке. Он имеет встроенный веб-сервер, который работает как веб-клиент SSH на указанном порту и предлагает эмулятор веб-терминала для удаленного доступа и управления вашей оболочкой SSH Linux-сервера с помощью любых браузеров с поддержкой AJAX / JavaScript и CSS без необходимости использования любые дополнительные плагины браузера, такие как FireSSH. - http://www.tecmint.com/shell-in-a-box-a-web-based-ssh-terminal-to-access-remote-linux-servers/

Эмуляция терминала на клиенте

AjaxTerm похожа на программу Anyterm, Энтони Лесуисс, написано на Python. Оболочка в коробке это программа, аналогичная Anyterm Маркуса Гучке, написанная на C. В отличие от Anyterm и Ajaxterm, она выполняет эмуляцию терминала в браузере, а не на сервере - http://anyterm.org/demos.html#secid2249226

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