ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

FinalShell连接Linux虚拟机全攻略:从SSH到常用命令

FinalShell连接Linux虚拟机全攻略:从SSH到常用命令 1. 为什么我建议新手先搞定 FinalShell而不是一开始就死磕命令行第一次真正用 FinalShell 连接 Linux 虚拟机是我在电脑前折腾到凌晨一点才成功的。那之前我对着黑乎乎的终端窗口敲ping、ssh root192.168.x.x足足敲了两天不是提示连不上就是密码输对了却显示 Permission denied。后来一个朋友说你换个工具试试。于是我下载了 FinalShell几分钟就看到了远程系统的桌面文件结构那一刻我意识到不是 Linux 难而是我之前用错了方式。这篇文章不是写给资深运维看的而是给那些刚装了虚拟机、第一次接触 Linux、或者正在为“为什么 Finalshell 连不上虚拟机”这类问题抓狂的同学。我会把 FinalShell 的核心功能、连接流程、日常最常用的 Linux 命令以及我在实际使用中遇到的几个典型问题和完整排查过程都梳理清楚。你看完之后不用再东拼西凑地查资料照着顺序做大概率能避开我走过的弯路。很多人觉得学 Linux 就得硬记命令把一堆ls、cd、cp背得滚瓜烂熟才算入门。我一开始也这么想结果就是打开终端一脸懵。后来才明白命令行该学但不要在最开始把自己劝退了。先有一个顺手的远程管理工具让你能看到文件、能编辑配置、能上传下载再配合命令去理解系统的行为学习的阻力会小很多。1.1 传统 SSH 客户端的三个痛点用裸终端连服务器这件事对新手确实不太友好。第一个痛点是操作不可见。你敲一条cat /etc/nginx/nginx.conf终端只显示文件内容你想改这个文件还得进去用vi。vi本身又是一个独立的学习曲线新手经常在插入模式和命令模式之间切换时崩溃最后连“怎么退出”都得搜半天。第二个痛点是文件传输麻烦。新手在 Windows 上写了一个脚本想放到 Linux 上跑如果只靠命令行你得搭一个 FTP 服务或者用scp命令。scp不是不能用但它的参数、路径、权限要求对新手来说又是一个坑。很多人的第一反应是把内容直接复制粘贴到终端里遇到多行脚本时就完全乱套。第三个痛点是服务器状态不可感知。连接上之后你根本不知道当前机器的内存占了多少、CPU 有没有跑满、磁盘是不是快爆了、网络有没有异常波动。你只能一条一条敲top、free -h、df -h去猜。如果连接的是远程服务器网络一抖你就掉线掉了也不知道什么原因。1.2 FinalShell 恰好补上了这些空缺FinalShell 是个一体化的远程管理工具它的核心是把终端、文件管理、性能监控和历史命令这些功能做到同一个界面里。你在左侧会话列表点一下就能连上一台机器在右侧输入命令下方实时显示 CPU、内存、磁盘、网络的使用曲线右侧还能像 Windows 资源管理器一样直接浏览远程目录、拖拽文件上传下载。它不是万能的但对学习和日常管理来说效率提升非常明显。尤其是“能看见文件结构”这一点。我第一次用的时候把远程的/etc、/var/log、/home目录挨个点了点突然就明白了 Linux 目录结构大致是怎么回事。那种感觉就像是玩游戏开了地图至少你知道自己在哪儿该往哪儿走。1.3 哪些场景适合用它我用 FinalShell 主要就三个场景管理虚拟机里的 Linux。比如 VMware 或 VirtualBox 里装了一个 Ubuntu/CentOS用 FinalShell 连接进去不用切到虚拟机窗口也省得忍受虚拟机界面卡顿。管理云服务器。买了云服务器之后基本不会再用什么网页版的 VNC 终端FinalShell 连接和管理都方便。学习和测试 Linux 命令。随便折腾不用怕搞坏系统因为文件管理面板可以让你比较直观地看到命令执行前后的变化。2. FinalShell 的核心功能拆解这几个功能才是日常主力很多教程喜欢把 FinalShell 的每个按钮都介绍一遍但我实际用下来真正高频的就那几个。这一节我按实际使用频率来排优先级你把下面这些吃透就够日常使用了。2.1 多标签会话管理FinalShell 左侧是一个会话树你可以在里面建文件夹、添加多个连接。比如你有一台 Ubuntu 虚拟机、一台 CentOS 虚拟机、一台云服务器把它们分别建好之后点一下就能切换。这个功能最大的价值在于你可以同时开两个标签页一边敲命令另一边查文件或者看监控不用来回切换窗口。我自己的习惯是建了三个分组本地虚拟机、测试服务器、生产服务器其实就是我一个练手的项目服务器。分组之后误操作的概率会降低很多因为每台机器都有名字标识颜色也可以区分。2.2 终端窗口的中文体验终端窗口对新手最友好的地方是中文不乱码。你用系统自带的 cmd 连 SSH经常碰到中文文件名、中文日志显示成乱码的情况FinalShell 默认对 UTF-8 编码处理得比较好我实际用下来看中文日志、乱码问题基本不存在除非源文件本身编码不是 UTF-8这个问题后面专门讲。另一个小亮点是快捷键可以直接在设置里调整字体大小、背景色甚至能设置终端窗口的透明度。长时间盯屏幕的话调成护眼绿色背景会舒服很多。你别小看这些体验上的细节它们直接影响你学习 Linux 的耐心。2.3 SFTP 文件管理面板学习阶段的“救命稻草”每个会话打开后右侧默认会有一个文件面板这个面板是真的适合新手。它展示的是远程服务器的目录结构你可以在里面直接上传文件到当前目录比如把 Windows 上的 JDK 压缩包拖进去就省得在终端写scp命令了右键远程文件选择“编辑”会直接打开一个文本编辑器改完保存就自动传回服务器查看文件权限、修改权限通过面板的勾选项就能把 644 改成 755直观了解chmod的效果。我自己下载 JDK 的步骤是先在 Windows 官网下载 tar.gz 包然后拖进 FinalShell 的文件面板再在终端里tar -zxvf解压。整个流程大概三分钟。之前用命令行wget下载还要从浏览器里复制下载链接纠结解压路径过程要心累得多。2.4 性能监控数据让你对服务器“有数”FinalShell 窗口下方有实时监控区CPU、内存、磁盘 IO、网络上下行都会画成曲线。对新手来说最直观的价值是你执行一条命令之后能看到内存是不是突然飙高、CPU 是否百分之百从而慢慢建立起“命令会影响系统资源”的概念。有一次我在练习压缩大目录发现 CPU 跑满、磁盘写入曲线拉满才真正理解什么叫 CPU 密集任务和 IO 密集任务的区别。对于排查问题来说这个面板也很有用。比如你发现系统很卡先看一眼监控如果内存接近满就去找占用内存的进程如果是磁盘 IO 异常就看看有没有进程在疯狂读写日志。2.5 历史命令记录与会话日志FinalShell 会记录你敲过的历史命令这个是免费版就有的功能。刚学的时候很容易犯一个毛病一条长命令好不容易写对了、执行成功了后来想再看一遍发现已经翻不到了。有历史记录之后我经常翻回去看自己之前的操作总结哪些命令是高频命令哪些可以总结成自己的“命令模板”。它还支持会话日志保存就是把你整个操作过程保存成文本文件。这个对复盘很有意义尤其是排查问题的时候你能清楚地回忆起当时做了什么操作、报了什么错。很多新手遇到问题喜欢马上百度但描述不清上下文有了日志你至少能知道自己在哪个目录、跑了什么命令。3. 从零开始的实际连接流程从虚拟机到云服务器走一遍这一节我把从环境准备到成功连接的完整步骤写出来。我以 VMware 里装了 Ubuntu Server 为例如果你用的是 CentOS 或者 VirtualBox原理一样只有个别命令不同。3.1 服务器端需要准备什么在连接之前你要确保虚拟机里的 Linux 满足三个条件SSH 服务已安装并启动。Ubuntu 默认可能没有安装 openssh-server你需要先在虚拟机的终端里执行sudo apt update sudo apt install openssh-server -y sudo systemctl enable --now sshCentOS 的话是sudo yum install -y openssh-server sudo systemctl enable --now sshd能拿到虚拟机的 IP 地址。在虚拟机终端里执行ip addr show或者ip a找到类似192.168.xxx.xxx的地址记住它。知道用户名和密码。如果你安装系统时创建了一个用户就用那个用户名如果你要用 root 登录Ubuntu 默认 root 没有密码需要先设置sudo passwd root设置完 root 密码后还需要确保 sshd 配置允许 root 登录。打开/etc/ssh/sshd_config找到PermitRootLogin如果前面有#就把它去掉改成PermitRootLogin yes然后重启 SSH 服务sudo systemctl restart ssh3.2 在 FinalShell 中创建连接打开 FinalShell左上角点击“文件夹”图标选择“新建”然后输入连接信息协议SSHLinux 一般就是 SSH主机填刚才查到的虚拟机 IP端口默认 22用户名你的 Linux 用户名或 root密码对应的密码点击确定后双击会话名称就能连接。如果一切正常你会看到一个带[rootlocalhost ~]#或者userhost:~$的提示符说明你已经成功进入 Linux 的“肚子”里了。3.3 为什么连不上虚拟机网络模式的坑很多人在这一步就卡住了。之前热词里我看到“为什么 finalshell 连不上虚拟机”能上热搜说明这个问题真的太普遍了。先说结论绝大多数情况下是因为虚拟机的网络模式是 NAT而 Windows 上的 VMware 网络服务没启动或者虚拟机的 IP 发生了变化。VMware 的三种网络模式模式特点对 SSH 连接的影响NAT 模式虚拟机通过宿主机共享网络上网虚拟机之间可互通宿主机能访问虚拟机最常见的模式只要 VMware NAT 服务在运行宿主机通常能访问虚拟机桥接模式虚拟机直接使用物理网络的 IP看起来像局域网中的一台独立机器如果局域网有 DHCP 分配也行但可能和路由器设置冲突仅主机模式虚拟机和宿主机组成一个孤立网络虚拟机不能上外网默认情况下也能连通宿主机但没外网我遇到的情况是虚拟机的 IP 之前是192.168.20.128但我重启了虚拟机之后它变成了192.168.20.135。电脑里的 FinalShell 还傻傻地连接旧 IP自然是连不上的。解决办法就是在虚拟机终端里重新执行ip addr show查看当前 IP然后用新 IP 去连接。如果你嫌每次 IP 都变太麻烦可以手动给虚拟机配一个静态 IP。在 Ubuntu 里修改/etc/netplan/目录下的 yaml 配置文件把dhcp4: yes改成dhcp4: no再填上静态 IP、网关、DNS。这个操作需要敲命令新手如果只是学习用倒也不必急着配静态 IPIP 变了就重新查一下就行。另外还有一个隐性坑Windows 虚拟机管理服务被禁用。如果你用的是 VMware在 Windows 服务管理器中找到VMware NAT Service和VMware DHCP Service确认它们正在运行。很多时候是清理软件把这两个服务禁用了导致虚拟机虽然有 NAT 网络但宿主机根本找不到它的通信入口。3.4 连接之后的“第一顿操作”我建议每一个刚连上 FinalShell 的新手先做这几件事输入whoami看看当前用户是谁输入pwd看看自己当前所在目录输入ls /看看根目录下有哪些文件和文件夹输入df -h看看磁盘占用情况输入free -h看看内存使用情况。这几条命令都执行一遍你对 Linux 的“手感”就建立起来了。你不需要一下子理解每个文件的含义先混个眼熟后面慢慢就熟了。4. 初学者最该先掌握的那批 Linux 命令高频、实用、能救命这一节我按实际使用频率挑了一批我认为初学者最先该掌握的命令。不是让你背完所有 Linux 命令大全其实日常真正高频的就那二三十个。4.1 文件和目录操作每天的必修课ls列出目录内容。ls -l显示详细信息权限、属主、大小、时间ls -a显示隐藏文件。ll是ls -l的别名很多发行版默认配置了。cd切换目录。cd /etc去 etc 目录cd ..返回上一级cd ~回到当前用户家目录。pwd查看当前目录完整路径。cp复制文件。cp a.txt b.txt复制文件cp -r dir1 dir2递归复制目录。mv移动或重命名。mv a.txt b.txt重命名mv a.txt /tmp/移动文件。rm删除。rm file.txt删除文件rm -rf dir递归强制删除目录。这条命令要特别小心rm -rf /这种操作是绝对不能碰的。mkdir创建目录。mkdir test创建单层目录mkdir -p a/b/c递归创建多层目录。touch创建空文件或更新已有文件时间戳。cat查看小文件内容。cat /etc/hostname直接输出文件内容到屏幕。tail查看文件尾部内容。tail -f 日志文件这个组合新手必学它是实时滚动日志的命令排查错误时离开它寸步难行。grep在文件内容中按关键词过滤。grep error /var/log/syslog会把所有包含 error 的行列出来。配合管道符|使用tail -f /var/log/syslog | grep error。我个人的建议是先别追求awk、sed这种高级文本处理把上面这些用熟了日常操作基本不卡壳。4.2 查看系统状态心里有数df -h查看磁盘分区使用情况-h参数以人类可读格式G、M显示。du -sh *查看当前目录下每个子目录占用的磁盘大小*表示所有项目。free -h查看内存使用情况。top实时显示进程排行和系统负载。按q退出。如果你看到%Cpu(s)那行接近 100%说明 CPU 很忙。ps aux查看当前所有进程。配合grep使用ps aux | grep java可以查看 Java 进程是否在跑。刚学的时候我有一个很蠢但很有效的练习方法每执行一个命令切到 FinalShell 的监控面板看曲线变化。比如敲一条find / -name *.log看到 CPU 突然飙高你就知道“查找文件”这个操作也是要吃资源的。4.3 权限操作理解 ugo 和 chmodLinux 的权限系统让很多新手头疼但它其实就是三组权限u文件属主、g属组、o其他人每一组有r读、w写、x执行。用ls -l看一个文件-rw-r--r-- 1 root root 1234 Jan 1 10:00 test.txt-rw-r--r--可以拆成四段第一个字符是文件类型-是普通文件d是目录后面三组三字符分别是 ugo 的权限。修改权限用chmodchmod 755 test.txt7等于421也就是rwx5等于41也就是r-x。所以chmod 755 test.txt的含义是属主可读可写可执行属组可读可执行其他人可读可执行。这在部署脚本、上传 web 项目的时候很常用如果你上传了一个 shell 脚本发现执行报Permission denied多半就是没有x权限。chown用来改属主和属组chown www:www /var/www/html4.4 压缩解压正经操作指南压缩解压是使用 FinalShell 时特别常见的场景比如下载了一个 JDK 或 Nginx 的 tar.gz 包。新手必须要掌握的几种解压 tar.gztar -zxvf package.tar.gz-z表示通过 gzip 解压-x表示解压-v表示显示过程-f表示后面接文件名这四个组合是最常用的。打包并压缩tar -zcvf backup.tar.gz /home/user/data-c表示创建压缩包。注意-f后面必须紧跟压缩包文件名位置错了会报错。解压 zipunzip package.zip解压 tar.xztar -xf package.tar.xz这些命令如果你实在记不住会影响效率但不用死记硬背。多用几次肌肉记忆自然就形成了。4.5 系统的“服务管理”思路现在主流 Linux 服务管理用的是systemctlsystemctl start nginx # 启动 nginx systemctl stop nginx # 停止 nginx systemctl restart nginx # 重启 nginx systemctl enable nginx # 设置开机自启 systemctl status nginx # 查看 nginx 运行状态新手最容易遇到的情况是明明安装好了 Nginx却访问不了结果发现是服务没启动。这时候用systemctl status nginx一看就知道。5. 我在实际使用中踩过的坑完整排查链路这一节是重点中的重点我把自己在学习过程中遇到过的、以及身边新手朋友问得最多的问题带着完整排查思路写出来。你如果正好遇到类似的就直接按步骤走。5.1 坑一FinalShell 连不上虚拟机报“Connection refused”或“Connection timed out”这个问题的排查顺序我建议从内到外第一步确认 SSH 服务真的在运行。在虚拟机终端里执行sudo systemctl status ssh如果显示active (running)说明服务正常。如果显示inactive或failed执行sudo systemctl start ssh如果你连systemctl都提示找不到服务那大概率是没安装 openssh-server回到 3.1 节先安装。第二步确认 IP 是否变了。在虚拟机里执行ip addr show看看当前 IP 和 FinalShell 里填的是否一致。这在 VMware NAT 模式下尤其常见。很多教程教你使用ifconfig但新版 Ubuntu 默认不装 ifconfig用ip addr更稳。第三步检查防火墙。Ubuntu 自带 ufw如果没有开启则不影响连接但你执行过sudo ufw enable的话默认会禁止外部访问包括 SSH 的 22 端口。检查一下sudo ufw status如果是active并且没有放行 22 端口执行sudo ufw allow 22CentOS 则用 firewalldsudo systemctl status firewalld sudo firewall-cmd --add-port22/tcp --permanent sudo firewall-cmd --reload第四步检查电脑和虚拟机网络是否在同一网段。在 Windows 里打开命令行执行ipconfig看到虚拟网卡的地址。如果 VMware 用的是 NAT 模式宿主机一般有一个VMnet8网卡IP 通常是192.168.xx.1而虚拟机的 IP 通常也是192.168.xx.xx。如果两个 IP 的网段不一样连接肯定不通。这种情况多数是虚拟机的网络模式不对或者 VMware 网络服务异常。第五步检查 VMware 的服务状态。在 Windows 任务栏右键打开“服务”窗口把名字里带 VMware 的服务通通确认一遍。最常见的坑是VMware NAT Service没启动导致虚拟机对外不可达。手工把它启动然后再试。我那次凌晨排查问题就出在第三步和第五步叠加我为了做实验开了防火墙同时 VMware 的 NAT 服务被一个系统优化软件关了导致 FinalShell 怎么都连不上。把两个问题都修复后才成功。5.2 坑二解压 Linux 压缩包中文乱码这个问题在热词里出现频率很高在 Windows 上压缩的 zip 文件传到 Linux 上用unzip解压里面的中文文件名全部变成一堆乱码。原因很简单Windows 的 zip 默认使用 GBK 编码更准确地说是 ANSI 中文编码而 Linux 的unzip默认按 UTF-8 去解码文件名编码对不上自然就是乱码。解决方案有几个按推荐顺序方案一安装并改用 7z 工具来解压。sudo apt install p7zip-full -y 7z x package.zip7z 对编码的兼容性比 unzip 好不少我实测下来Windows 压的 zip 用 7z 解压基本不会乱码。方案二用 unzip 的-O参数指定编码。unzip -O GBK package.zip这种方案的优点是系统自带 unzip 就能解决缺点是-O参数在某些版本比如一些精简 CentOS上不支持需要先安装unzip的增强版。方案三如果是上传代码先改文件名再压缩。这个是我现在的工作习惯凡是跨 Windows 和 Linux 传输的压缩包文件命名尽量用英文或拼音避免非 ASCII 字符。不是说中文不行而是能省则省能少一个坑就少一个坑。5.3 坑三提示 Permission denied或者明明有用户却进不了目录这个坑几乎每一个新手都会遇到。常见在两种场景场景一你在家目录写了一个脚本/home/test.sh执行./test.sh报Permission denied。解决办法是加执行权限chmod x /home/test.sh场景二你切换到 root 用户想直接看某个人的家目录cd /home/otheruser报 Permission denied。这是因为 Linux 默认家目录权限是700只有属主本人和 root 能进其他用户无权进入/home/otheruser。如果你用 root 登录通常没问题如果你是普通用户想访问别人的家目录要么把权限改成755这样其他人可以进入但只能读不能写要么就是用 root 身份去操作。排查这类问题的通用思路是先ls -l看文件详细的权限属主属组再确认自己当前是什么用户whoami最后根据权限信息决定用chmod、chown还是切用户。切忌盲目chmod 777。虽然 777 大部分时候能解决问题但会让文件完全敞开没有人约束任何权限长期这样操作一旦服务器被入侵文件随便就能删改。5.4 坑四连接后频繁掉线或者长时间没操作就断用 FinalShell 连接服务器如果隔上一阵子没操作就会发现终端卡死然后提示连接已断开。原因是 SSH 连接有个“超时断开”机制服务器或者客户端在一段时间内没有数据交互就默认连接失效。解决办法有两个层面客户端设置FinalShell 内设置在会话属性里找到“高级”或者“SSH”相关的配置开启“心跳包”或者“保持连接”选项。这个机制就是定时往服务器发送一个空数据包告诉对方“我还活着”从而维持连接。一般设置 30 到 60 秒发送一次心跳就够了。服务端设置Linux 服务器上修改/etc/ssh/sshd_config在文件末尾加上ClientAliveInterval 60 ClientAliveCountMax 3意思是服务器每 60 秒向客户端发一次探测连续 3 次没有响应就断开连接。加完重启 SSH 服务sudo systemctl restart ssh如果资源允许我建议两边都做。两边同时启用之后你可以一边看 FinalShell 的监控面板一边干别的事回来继续敲命令不用重新连接体验会舒服很多。5.5 坑五修改配置文件之后不生效新手经常改完/etc/nginx/nginx.conf然后访问网站发现还是旧配置。这里唯一的问题就是改完文件忘了重启服务。配置文件一般只在服务启动时读取一次你光保存文件但不重启等于没改。正确流程是nginx -t # 检查配置语法 systemctl restart nginx # 重启 nginxnginx -t这个检查步骤很重要能帮你过滤掉语法错误。直接重启如果配置有误服务可能起不来反而更糟。还有个隐藏问题有些配置文件里有别的位置的include比如/etc/nginx/conf.d/*.conf你可能改了半天根配置实际生效的却是conf.d里的某个子配置文件。遇到“改了不生效”先grep -r 关键字 /etc/nginx/全局搜一遍确认你改的是不是真正被引用的文件。6. 把 FinalShell 和历史命令结合起来高效学习 Linux这一节算是我在实际学习过程中的一点私人心得。工具再好也只是工具真正能让你进步的是持续地练习和总结而 FinalShell 提供了很好的练习环境。6.1 利用历史命令做“命令复盘”FinalShell 的历史记录功能我前面提过想再展开说一个具体用法每次学习新命令我会故意在测试服务器上“乱敲”一通然后翻历史记录看看自己刚才到底做了哪些操作、顺序是什么、哪个命令输错了、错在哪个参数。复盘的时候你会发现自己犯的错误都是有规律可循的——有的人老把路径写错有的人老忘加sudo有的人老忘记-rf的参数位置。把这些高频错误总结出来贴在自己桌面上下次操作前扫一眼真的能少踩很多坑。这就是“有效练习”比单纯看命令大全有用得多。6.2 用 FinalShell 的多会话同时操作做对比实验我学习 Linux 权限的时候开了两个会话一个是普通用户一个是 root。在两个会话里同时看同一个文件# 普通用户 cat /etc/shadow这台机器如果权限设置正确普通用户应该会看到Permission denied而 root 用户能正常看到内容。这样直观的对比实验比任何教程都一针见血。你还能用这个方式验证防火墙规则、验证不同用户的环境变量差异。FinalShell 的左侧会话树点一下切换比开多个终端窗口要顺手得多。6.3 命令不是靠背的是靠“解决问题”驱动的我反复提醒自己学命令的最佳时机永远是我“真正需要用到它”的时候。遇到问题去查、去用、去记录比平白无故背五十个命令有效得多。你不要追求“Linux 常用命令大全”里那 100 个命令都背下来先把能处理以下场景的命令掌握就已经超过了大部分还没入门的人能进到项目目录、看到目录下有什么文件能查看某个服务是否在运行能实时看日志、过滤出关键词能把上传的压缩包解压能修改配置文件。这五个能力覆盖了我百分之九十以上的日常操作。如果你能用 FinalShell 把这五件事顺滑地完成接下来想深入自然会见一个学一个越走越远。最后再分享一个小习惯我会在每天结束练习前打开 FinalShell 的历史记录随手把今天用得最多的五条命令复制到一个 Markdown 文件里并在旁边写一行注释“今天用它干了什么”。一个月之后回头翻看你的进步会肉眼可见。工具能帮你看到每一个命令的执行结果但帮你把命令留住、内化成能力的还是这个小小的复盘动作。
返回列表