您如何远程管理Linux机器?[关闭]


13

注意:我今天早上就EC2盒问了这个问题,但是只回到了用于启动和停止实例的工具的链接,因此我将表述改为...

我有几个Linux盒子,可以为我的一个项目做每晚处理的工作。我将不时需要进入,进行一些代码更改,进行一些配置,移动文件等。

我用于这些操作的工具集非常稀疏(将SSH插入框中,在VIM中编辑文件,需要我的WGET远程文件),我怀疑还有更好的方法。我很好奇,我想听听其他人在做什么。

您是否正在使用某种形式的Windowing系统和等效的远程桌面来访问该框,还是全部使用命令行?管理远程Windows盒很简单,因为您可以简单地远程桌面进入并通过网络传输文件。在Linux世界中有与此等效的东西吗?

您是在机器上直接进行配置文件更改/脚本调整吗?还是在本地框上设置了某些内容以远程编辑这些文件?还是只是简单地远程编辑它们,然后在每次保存时传输它们?

您如何在服务器和本地环境之间来回移动文件?FTP?通过VPN的某种映射驱动器?

我真的需要掌握一些管理这些框的最佳实践。任何消除某些痛苦的建议都将受到欢迎!


不要使用FTP,请改用SFTP。
布拉德·吉尔伯特

甚至更好,使用FUSE sshfs
Cristian Ciupitu 2014年

Answers:


19

我用于这些操作的工具集非常稀疏(将SSH插入框中,在VIM中编辑文件,需要我的WGET远程文件),我怀疑还有更好的方法。我很好奇,我想听听其他人在做什么。

疏?你到底是什么意思 对不起,请原谅我,但是将ssh,vim和wget视为痛苦几乎是侮辱。从您的问题中,我推断出您主要是白天工作的程序员,所以我有点理解这个问题。但老实说,我不会雇用对您提到的三种工具都不满意的Linux管理员。

您是否正在使用某种形式的Windowing系统和等效的远程桌面来访问该框,还是全部使用命令行?管理远程Windows盒很简单,因为您可以简单地远程桌面进入并通过网络传输文件。在Linux世界中有与此等效的东西吗?

对于管理员任务,我从未使用过X环境。您不需要一个,它只占用系统资源,并且在大多数情况下,它们是障碍,而不是帮助。大多数GUI配置工具(实际上几乎是所有)仅提供可以在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框时,我受到了严重的阻碍。对您而言,这是另一回事。这就是您所习惯的。所以,给它一些时间,它就会来找你。


12

您已经提到了ssh,vim和wget,这是必不可少的。一些可以使生活更轻松的工具:

1. GNU屏幕/ byobu

“ GNU Screen是一个免费的终端多路复用器,它允许用户访问单个终端窗口或远程终端会话内的多个单独的终端会话。它对于从命令行处理多个程序以及从启动的shell分离程序很有用。该程序。” (来自维基百科的GNU_Screen页面)

一个主要优点是您可以拥有一个或多个虚拟终端,它们的状态与您回来时离开虚拟终端的状态完全相同(即通过ssh重新登录)。当您的连接由于某种原因断开时,这也很好。

Screen与您用来连接到盒子的软件(它位于服务器上)无关,可以独立工作,因此它可以与腻子或大多数其他终端软件完美结合。

本文显示了您可以使用它进行的一些不错的操作:http : //www.pastacode.de/extending-gnu-screen-adding-a-taskbar/en/

一个很好的选择是byobu,它在某些发行版中进行了很好的预配置:http : //byobu.co/


2.午夜指挥官

一个基于控制台的图形化浏览工具,用于查看和操作文件和目录。

也可以进行安全的远程传输。有一个内置的FISH和FTP客户端。

这意味着您在命令行控制台中并排有两个文本窗口,一个显示您的远程框,另一个显示您连接到远程框的位置(也可以是您的本地系统),然后您可以并排浏览两个文件系统并标记或调查单个文件或文件树桩,还可以在位置之间复制或移动它们。鱼是安全的,FTP不是。对于初学者来说非常强大且简单。


3. rsync

在不同位置之间进行快速,安全和可靠的文件传输和同步


4. VCS

使用诸如集市,Mercurial或git之类的分布式版本控制系统来更新代码。Github或Bitbucket提供商业代码托管,但这不是必需的,您也可以在自己的计算机上有效地使用它。

约瑟夫·科恩(Joseph Kern):您能否详细说明如何将git真正用于远程配置组织?


5.终端客户

在类似unix的系统上,它们已经安装在Windows上,您可以使用Putty,Tera Term,Mind Term或Pandora。或从cygwin终端窗口到远程盒进行cygwin安装和ssh(这具有更多优点,但这是您偏爱的问题)。


6.隧道和端口转发

将某些端口安全地转发到本地计算机可能会有所帮助。例如,您可以转发mysql端口TCP 3306或postgres TCP 5432并在本地安装一些数据库管理工具。

您可以使用腻子(或基于命令行的兄弟plink)在Windwos机器上构建隧道,而cygwin和Mindterm也可以进行端口转发。如果您在本地的类Unix机器上,则可以使用ssh odr plink创建这种隧道。

为了为各种端口创建更稳定和永久的隧道,我建议使用OpenVPN。点到点的“预共享密钥”隧道方法安装起来并不难。


7.拥有类似本地unix的系统

如果您的本地计算机是Mac,则已经有此计算机,则可以打开本地外壳程序。当您的工作站基于Windows时,在同一本地网络中创建类似本地Unix的服务器可能会有所帮助。这可以是连接到同一路由器或交换机的不同房间中的另一台计算机。或者,如果只需要一台计算机,则可以安装免费的vmware服务器并制作一个虚拟机,最好是与远程计算机相同的操作系统。在其上安装一个samba服务器,您可以从桌面上“ net use”该samba共享。

如果您是本地服务器上的ssh服务器,并在路由器上打开端口22,则在外时可以ssh进入本地系统。

您可以建立到远程计算机的隧道,或者使用rsync传输和同步文件以及整个文件树。您可以将其用于测试,用于VSC,用于本地开发,用作本地Web服务器以用于培训。

您可以从远程计算机提取备份。您可以创建自动执行备份的本地cron作业(例如,您要定期保存在本地的数据库)


8. X远程GUI

如果您实际上是在像Linux这样的系统上工作,那么也可以在Linux服务器上运行GUI应用程序,从而在本地计算机上绘制GUI。这可能是图形文件比较工具,也可能是您想要的任何东西。

尽管这不是很常见,并且在某些情况下不必使用gui软件来进行Linux机顶盒管理,但在某些情况下,如果可以的话,它可能会很有用。

在远程计算机上,确保在/ etc / ssh / sshd_config中存在以下行:

X11Forwarding Yes

重新启动ssh服务器

/etc/init.d/sshd restart

然后下次您登录

ssh -X me@remote-box

您将有一个X隧道,尝试在远程服务器上安装xclock以进行测试,并xclock在我刚刚提到的ssh会话中执行。用于测试目的的简单x时钟应出现在Linux GUI上。

如果您安装了本地X环境,则Mac也可能是这样。


9.如果您有一堆类似的框或任务,请使用系统配置工具

如果您有服务器场或使用许多冗余或其他相同或相似的计算机进行大型云部署,则可以使用此服务器。

如果大多数工具箱是单独的,或者运行的操作系统或版本不同,则可能没有任何意义。

有几种工具:


10.使用以下方法部署应用程序容器 docker

这甚至更进一步。Docker是一个开源项目,可自动在软件容器内部署应用程序:https : //www.docker.io


11.结合使用Google Compute Engine和自动部署管理

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

Google为Linux VM提供了非常令人兴奋的可能性。您可以使用包括RESTful API,命令行界面和基于Web的控制台在内的工具快速部署大型虚拟机集群。您还可以使用RightScale和Scalr之类的工具来自动管理您的部署


我认为这是一个比公认的答案有用得多的答案。MC是我首选的首选工具,特别是因为它允许您cd /#sh:<user>@<server>:<directory>登录到远程计算机以进行浏览和文件传输,并且Ctrl-o会暂时将您切换到控制台。另一个Ctrl-o只需按一下键就可以使您返回MC!
Gustav Bertram

在管理Linux服务器时拥有Linux桌面的便利性不容小.。虽然我看不出有什么用途为午夜指挥官...
迈克尔·汉普顿

@Michael我经常使用mc的FISH客户端。
2014年

4

如果您正在寻找一个不错的GUI来通过Windows框中的SSH通过文件管理进行操作,请查看WinSCP:http : //winscp.net

我不管理任何EC2实例,但是通常,如果我有一台以上的计算机在执行角色,那么我将尝试编写脚本以在所有类似的框上执行工作,而不是逐个框地进行更改。

我想开始使用Puppet(http://reductivelabs.com/products/puppet/),因为它使系统管理更像是配置管理工作。我还没有多余的时间来详细了解它,但是我听到了非常好的事情。


4

您需要考虑一个系统配置管理工具,例如Chef。

我几乎不再通过SSH会话手动管理系统。我将Web应用程序和项目的所有代码保存在源代码存储库中,可以从运行它们的系统(例如EC2上的网站)访问这些代码。在云中工作时,拥有自动化的基础架构至关重要。

基本工作流程如下所示。首先,对于应用程序代码和配置数据:

  • 从GitHub或其他版本控制存储库克隆/签出代码。
  • 在本地工作站/笔记本电脑上,用我最喜欢的编辑器编辑代码。
  • 提交更改,推送到中央存储库。

要进行配置,请添加:

  • 将配置文件安装在Chef可以为它们提供服务的位置。
  • 在边缘节点上触发Chef-Client运行,或等待时间间隔。

对系统进行配置,例如软件包安装,用户创建,从模板生成的配置文件等。

我[几乎]从未直接在远程系统上手动编辑配置文件,应用程序数据或其他任何内容。更改是通过我的本地存储库完成的,并推送给了主服务器。我知道我的系统每次都将正确配置,无论是否必须终止实例并重新启动它。

配置所需的文件直接在Chef服务器(即Web应用程序(merb,在Apache + Passenger中运行))中提供。通过openid授权控制对客户端的访问。

我的配置包括与Nagios和Munin的挂钩,因此我也可以进行监视和趋势分析,而无需手动进行任何设置。

这些天的最佳实践倾向于自动配置管理。如果您仍在手动执行操作,则说明您工作太辛苦了。


3

ssh,vim和wget有什么问题?我认为大多数Windows用户都不知道珠宝。:-)

有时我通过FTP或SFTP远程使用gVim。

如果您希望在Linux机器上使用GUI,则可以在本地主机上运行X服务器(请参见Cygwin),然后通过ssh连接将显示转发回去。

我从来没有考虑过VPN解决方案值得花钱或麻烦来管理Linux。

如果您在进行开发并且需要在服务器上运行开发作业,只需在服务器上设置版本控制客户端,远程登录,同步客户端并运行您的流程即可。


3

管理远程Windows盒很简单,因为您可以简单地远程桌面进入并通过网络传输文件。在Linux世界中有与此等效的东西吗?

这是拖钓的目的吗?

Windows盒的远程管理并非易事。Unix盒的远程管理是因为它们被设计为可远程管理并位于网络上。对于Windows来说,这是一个系统上的一个螺栓,该系统并非从头开始设计即可用于网络。

这是轶事,但从多家公司的经验来看,Linux机器的服务器对sys admin的比例要比Windows高得多。仅仅因为Windows上的自动化并非易事,而gui总是比脚本慢。话虽这么说,有些Windows管理员可以将Windows基础结构变得易于管理,但是这些管理员非常少见。

默认情况下,每个Linux发行版中都提供您需要的所有工具。如果要进行图形登录,请继续这样做,这只会浪费CPU和内存,并且会给您与Windows相同的问题。正如已经说过的,对于少数几个盒子,您应该考虑使用puppet,chef,cfengine或其他许多可用工具之一。


1
从某种意义上说,我的意思是微不足道的,因为管理远程Windows框的体验与在桌面上的体验完全相同。无需学习。在我看来,通过SSH进行工作就像在瓶子里建造一艘船。您有一个小孔,可以通过它用长镊子触摸服务器。我真的惊讶地发现,你们所有人都在实际使用并享受我已经在使用的命令行工具。我只是期望找到一套我忽略了的丰富工具。
杰森·凯斯特

2

您说您正在使用SSH管理“几个”框。我强烈建议ClusterSSH一次将相同的命令写入所有命令(假设它们具有相似的用途)。

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

用法就像“ cssh -l用户名clustername”一样简单,它将打开许多uxterm窗口,您可以一次或分别管理所有窗口。群集由配置文件中的IP列表定义。据我所知,唯一缺少的是X支持。

编辑:我已经迁移到终结者,因为可以轻松保存和还原多终端布局,如果需要,您还可以同时获得10条X隧道。使同时配置服务器和客户端计算机变得容易。

另外,在客户端上进行软件更新时,Fabric很方便,基本上可以替换所有zip / scp / unzip / cp东西。


1

我用:

  • SSH-用于访问
  • SCP-复制文件
  • SSHFS-如果我需要挂载驱动器或目录
  • git-保存配置

将我的配置置于版本控制下,可能是我做过的最聪明的事情。我尽可能多地使用基于SSH的工具来减少管理资源和攻击面。

目前我所有的git repos都是本地的。将来,我会将配置移至远程存储库。


1

不要忘记使用Webmin,它是用于Unix / Linux的系统管理的基于Web的界面。


0

SSH对我而言一直足够。X11本质上是不安全的,因为它本身并未加密,因此还有其他一些选择,它们本质上是远程桌面。但是,可以通过SSH连接建立隧道(并且无需打开其他端口即可获得好处)。当然,这假定您在服务器上安装了X环境。

SFTP(是SSH上的ftp,因此无需再次打开其他端口)可用于将文件放置在服务器上,而不是拉出文件。可以在http://filezilla-project.org/上找到一个很好的Windows sftp客户端。


0

当更改很简单时,我将切换到方框并在命令行中使用vi / nano等编辑器进行更改。对于文件上更复杂的更改,例如同时编辑多个源代码,我在Mac OS X上使用BBEdit。它可以使用SCP访问文件系统。我确定有针对Windows和Linux的编辑器。sshfs是使用ssh远程访问文件系统的一种方法。


0

绝对是腻子;除了ssh客户端外,还有一个基于Windows的SCP客户端。


0

linux上ssh的命令行(因为它们甚至都没有安装X11),以及Apple机器上ssh和ARD的混合。

请注意,我绝不使用Apple Remote Desktop来传输文件,因为基于TCP的AFP 太慢了;我只是用scp


0

如果要进行远程图形访问,几乎可以肯定要设置VNC。

如果要通过SSH远程编辑文件,则可以选择以下选项:

  • 如果您使用KDE工具(Kate,KDevelop),请使用fish协议。
  • 设置FUSE以(自动)安装远程卷。
  • 使用muCommander(跨平台,图形mc)来回移动文件
  • 一些文本编辑器(例如Mac上的TextWrangler)支持通过ssh获取文件并来回移动它们

编辑完文件后,只需使用SSH,例如开始编译。

要考虑的另一件事是使用版本控制系统。 bzr非常好;它易于设置,并且易于使用。您可以在一台计算机上工作,推送更新,在服务器上推送更新,执行命令,以及在出现问题时恢复操作。


0

SSH大部分时间都在工作。 学习可用的命令行工具是值得的。如果有我要使用的GUI工具,请使用VNC

为了移动文件,我通常将CFIS / SAMBA共享安装到本地计算机上。


0

对于简单的更改,SSH和SCP可以解决问题。如果需要在大量计算机上进行更改,则应查看配置管理系统。它将能够启动/停止服务,更改配置文件的内容以及验证系统是否处于已知状态。

我更喜欢使用Bcfg2,但是PuppetCFEngine也很流行。

我可以在所有服务器上每小时运行一次Bcfg2,尽管它也可以手动运行。所有系统配置文件都有一个中央版本控制的存储库,因此我们可以跟踪所做的任何修改。该系统运行良好,是从手动登录到服务器并进行调整的一大步。



0

一直以来,管理Windows系统都是“繁重的”工作:也就是说,必须有一个完整的窗口环境,该环境必须是本地的,也可能是网络繁多的应用程序,例如远程桌面或VNC。

UNIX在设计时就考虑了网络-因此,这些工具旨在通过网络工作,而不是为了美观。UNIX服务器不应设置该窗口环境(通常为X11)。

SSH,wget和vim的最低限度接口更有利于网络-实际上,vi被设计用于300baud调制解调器线路。

实际上,确实有图形工具可以帮助您使用远程UNIX和Linux系统(wsp是其中的一种; gvim可能是另一种)。

管理UNIX系统的通常方法是登录计算机并在计算机本身上工作。无需四处移动文件即可进行编辑。必须记住的唯一一件事是确保配置正确并在可能的情况下对其进行测试。


0

SSH访问,如果我需要传输有限数量的文件,请使用scp。如果确实需要,则通过SMBFS / SAMBA共享目录。通常,这是浪费时间。我们某些* nix不称职的员工使用通过HTTPS锁定到本地子网访问权限的webmin。


0

Shellinabox

Shell In A Box(发音为shellinabox)是Markus Gutschke创建的基于Web的终端模拟器。它具有内置的Web服务器,该服务器在指定端口上作为基于Web的SSH客户端运行,并提示您Web终端模拟器使用任何启用AJAX / JavaScript和CSS的浏览器远程访问和控制Linux Server SSH Shell。任何其他浏览器插件,例如FireSSH。— http://www.tecmint.com/shell-in-a-box-a-web-based-ssh-terminal-to-access-remote-linux-servers/

客户端的终端仿真

AjaxTerm和Antony Lesuisse的Anyterm相似,是用Python编写的。Shell In A Box是与Markus Gutschke用C编写的与Anyterm类似的程序。与Anyterm和Ajaxterm不同,它在浏览器而不是服务器中进行终端仿真— http://anyterm.org/demos.html#secid2249226

Butterfly还是一个Web服务器(用python编写),为全功能客户端仿真Web终端提供动力。


1
不!壳牌在一箱如此不安全!
ewwhite 2014年

您以前使用过Butterfly吗?
Pegues
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.