Как вы управляете своими Linux-блоками удаленно? [закрыто]


13

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

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

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

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

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

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

Я действительно должен был бы получить некоторые лучшие методы для администрирования этих коробок. Любые предложения, чтобы снять часть боли будет приветствоваться!


Не используйте FTP, вместо этого используйте SFTP.
Брэд Гилберт

Или, что еще лучше, используйте FUSE sshfs .
Кристиан Чиупиту

Ответы:


19

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

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

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

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

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

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

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

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

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

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

Я действительно должен был бы получить некоторые лучшие методы для администрирования этих коробок. Любые предложения, чтобы снять часть боли будет приветствоваться!

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


12

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

1. Экран GNU / Бёбу

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

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

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

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

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


2. Полуночный командир

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

Может также делать безопасные дистанционные переводы. Есть встроенный FISH и FTP клиент.

Это означает, что у вас есть 2 текстовых окна бок о бок в консоли командной строки, и одно показывает ваше удаленное окно, а другое - где бы вы ни подключались (это также может быть ваша локальная система). Затем вы можете перемещаться по обеим файловым системам рядом и отмечать или исследовать отдельные файлы или древовидные файлы, а также копировать или перемещать их между местоположениями. РЫБА безопасна, 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 (или командной строки, основанной на его младшем брате), с помощью cygwin и Mindterm также может выполнять переадресацию портов. Если вы находитесь на unix-подобной машине, вы можете использовать ssh odr plink для создания такого туннелирования.

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


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

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

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

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

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


8. X Remote GUI

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

Хотя это не очень распространено и в некоторых случаях нет необходимости использовать программное обеспечение с графическим интерфейсом для администрирования 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 для автоматического управления развертыванием .


Я думаю, что это гораздо более полезный ответ, чем принятый. MC - мой предпочтительный инструмент, тем более что он позволяет вам cd /#sh:<user>@<server>:<directory>входить в систему на удаленном компьютере для просмотра и передачи файлов, а Ctrl-o временно переключает вас на консоль. Еще один Ctrl-O возвращает вас в MC одним нажатием клавиши!
Густав Бертрам

Удобство наличия рабочего стола Linux при управлении серверами Linux невозможно переоценить. Хотя я не вижу смысла в Midnight Commander ...
Майкл Хэмптон

@Michael Я часто использую FISH-клиент mc.
Мит

4

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

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

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


4

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

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

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

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

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

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

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

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

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

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

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


3

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

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

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

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

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


3

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

Этот троллинг предназначен?

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

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

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


1
Я имел в виду Trivial в том смысле, что опыт управления удаленной коробкой Windows точно такой же, как на моем рабочем столе. Там нет необходимости обучения. Работать через SSH - все равно что строить корабль в бутылке. У вас есть эта маленькая дыра, через которую вы можете прикоснуться к серверу с помощью длинного набора пинцетов. Я удивлен, обнаружив, что вы, ребята, все на самом деле используете и наслаждаетесь инструментами командной строки, которые я уже использую. Я просто ожидал найти богатый набор инструментов, которые я упустил из виду.
Джейсон Кестер

2

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

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

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

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

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


1

Я использую:

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

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

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


1

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


0

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

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


0

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


0

Определенно замазка; Кроме ssh-клиента, есть и SCP-клиент на базе Windows.


0

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

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


0

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

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

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

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

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


0

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

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


0

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

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

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



0

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

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

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

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

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


0

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


0

Shellinabox

Shell In A Box (произносится как shellinabox) - это веб-эмулятор терминала, созданный Маркусом Гучке. Он имеет встроенный веб-сервер, который работает как веб-клиент SSH на указанном порту и предлагает вам эмулятор веб-терминала для удаленного доступа и управления вашей оболочкой SSH Linux Server с использованием любых браузеров с поддержкой 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. Shell In A Box - программа, аналогичная Anyterm, написанная Маркусом Гучке, написанная на языке C. В отличие от Anyterm и Ajaxterm, она выполняет эмуляцию терминала в браузере, а не на сервере - http://anyterm.org/demos.html#secid2249226

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


1
Нееет !! Shell в коробке это так небезопасно!
ewwhite

Вы когда-нибудь использовали Butterfly раньше?
Pegues
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.