你如何远程管理你的 Linux 机器?

Jas*_*ter 13 remote-access linux

注意:我今天早上问了这个关于 EC2 盒子的问题,但只得到了启动和停止实例的工具的链接,所以我会改写...

我有几个 Linux 机器为我的一个项目执行夜间处理工作。有时,我需要进入,进行一些代码更改,配置一些东西,移动文件等。

我用于这些操作的工具集非常稀少(SSH 进入盒子,在 VIM 中编辑文件,我需要 WGET 远程文件),我怀疑有更好的方法来做到这一点。我很想知道我职位上的其他人在做什么。

您是否使用某种形式的窗口系统和远程桌面等价于访问该框,还是全部是命令行?管理远程 Windows 设备是微不足道的,因为您可以简单地远程进入桌面并通过网络传输文件。在 Linux 世界中是否有类似的东西?

您是否直接在机器上进行配置文件更改/脚本调整?或者您是否在本地机器上设置了一些东西来远程编辑这些文件?或者您只是远程编辑它们然后在每次保存时传输它们?

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

我真的需要一些最佳实践来管理这些盒子。任何消除一些痛苦的建议将是最受欢迎的!

wzz*_*zrd 19

我用于这些操作的工具集非常稀少(SSH 进入盒子,在 VIM 中编辑文件,我需要 WGET 远程文件),我怀疑有更好的方法来做到这一点。我很想知道我职位上的其他人在做什么。

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

您是否使用某种形式的窗口系统和远程桌面等价于访问该框,还是全部是命令行?管理远程 Windows 设备是微不足道的,因为您可以简单地远程进入桌面并通过网络传输文件。在 Linux 世界中是否有类似的东西?

对于管理员任务,我从不使用 X 环境。您不需要它,它只会占用系统资源,而且在大多数情况下,它们只是一种障碍而不是帮助。大多数 GUI 配置工具(嗯,几乎所有的,真的)只提供您可以使用 vim 在配置文件中设置的配置选项的子集。

管理 Linux 机器与管理 Windows 机器一样简单。获得体面的技能组合只需要一些时间。

和网络文件传输等效?很多。scp、sftp、ftp、nfs、cifs/smb(Windows 文件共享协议),然后是一些。

您是否直接在机器上进行配置文件更改/脚本调整?或者您是否在本地机器上设置了一些东西来远程编辑这些文件?或者您只是远程编辑它们然后在每次保存时传输它们?

取决于我在做什么。我直接在机器上的配置文件中做的大部分事情(用于开发和测试盒),然后我将文件推送到我们卫星服务器上的配置通道,之后我将文件直接部署到所有服务器(用于生产盒)。真的,vim 是个宝。也就是说,当您发现如何正确使用它时。

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

scp 可能还有一些 sftp,我建议你也这样做。永远不要使用 FTP 在公共网络上移动敏感文件(例如配置文件)。我不使用映射网络,因为我需要的只是在服务器上。如果您在这里指的是 c 文件而不是配置文件,我通常使用 svn 或 git 之类的东西,然后将我的更改推送到框。

我真的需要一些最佳实践来管理这些盒子。任何消除一些痛苦的建议将是最受欢迎的!

您已经在使用它们:ssh、scp、wget 和 vim。那些不是痛。可能会有一些出牙的痛苦,而你会发现它们有多强大。但是,回到 Windows 类比,当我必须使用 Windows 框时,我感到严重受阻。对你来说,情况正好相反。这只是你习惯的。所以,给它一些时间,它会来找你。


mit*_*mit 12

你已经提到了 ssh、vim 和 wget,它们是必不可少的和完美的。一些可以让生活更轻松的附加工具:

1. GNU Screen / 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 客户端。

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


3.同步

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


4.VCS

使用分布式版本控制系统(如 bazaar、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 并在本地安装一些数据库管理工具。

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

为了为各种端口创建一些更稳定和永久的隧道,我推荐 OpenVPN。从点到点的“预共享密钥”隧道方法并不难安装。


7. 有本地的类 Unix 系统

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

如果您在本地服务器上有一个 ssh 服务器并在您的路由器上为它打开端口 22,那么您可以在外面时通过 ssh 进入您的本地系统。

您可以建立到远程机器的隧道或使用 rsync 传输和同步文件和整个文件树。您可以将它用于测试、VSC、本地开发、本地网络服务器、培训目的。

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


8. X 远程图形用户界面

如果您在物理上使用类似 Linux 的系统,也可以在您的 linux 服务器上运行 GUI 应用程序,这些应用程序在您的本地机器上绘制 gui。这可以是图形文件比较工具或几乎任何您想要的工具。

虽然它不是很常见,并且在 msot 情况下没有必要使用 gui 软件进行 linux box 管理,但在某些情况下,如果可以的话,您可能会发现它很有用。

在远程机器上,确保在 /etc/ssh/sshd_config 这一行存在:

X11Forwarding Yes
Run Code Online (Sandbox Code Playgroud)

重新启动 ssh 服务器

/etc/init.d/sshd restart
Run Code Online (Sandbox Code Playgroud)

然后下次您登录时

ssh -X me@remote-box
Run Code Online (Sandbox Code Playgroud)

您将拥有一个 X 隧道,尝试在远程服务器上安装 xclock 以进行测试并xclock在我刚刚提到的 ssh 会话中执行i。用于测试目的的简单 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 等工具自动管理您的部署