Xshell连接Linux云服务器并安装Nginx完整实操指南 📅 发布时间:2026/9/12 8:22:56 👁 浏览次数: 最近入手了一台HoRain云的云服务器想着把手上几个小项目都挂上去。第一步就是通过Xshell远程连接Linux再把Nginx装起来。说实话这俩操作对老手来说就是几分钟的事但对刚入门的同学坑还真不少Xshell连不上、Nginx启动失败、浏览器访问超时……我这些天全碰了一遍。这篇就把从连接Linux到安装Nginx的完整流程、踩坑记录、几个靠谱的避坑方法都写出来希望能帮你少走弯路。如果手头正好有一台云服务器或者正打算从零开始部署这份实操笔记可以直接照着做。1. 动手前想清楚的三件事1.1 为什么是云服务器加本机终端这套组合服务器放在机房没有显示器也没有键盘鼠标你要想操作它最常用的方式就是通过SSH协议从自己电脑远程连过去然后敲命令。Xshell是Windows下一款非常成熟的SSH客户端标签式会话、历史命令、文件传输这些功能都很顺手个人使用有免费授权所以我一直把它当作远程连接Linux的首选工具。至于HoRain云我选它主要是看中后台操作简单、资源定价透明新用户上手几乎没有门槛。有了云服务器和Xshell之后目标就非常明确本地Windows上用Xshell远程连到Linux然后在Linux里把Nginx跑起来最终通过浏览器访问到Nginx欢迎页。这个链路一旦打通你后续不管是部署网站、做反向代理还是跑各种服务都能复用同一套方法。1.2 登录服务器前必须要拿到的三样信息云服务器虽然已经开机但你不能像打开本地电脑一样直接进去。需要先确认三样东西公网IP地址、登录用户名、登录密码或密钥。公网IP在HoRain云控制台的实例列表里能看到是一串类似 1.2.3.4 的IPv4地址也有可能是IPv6。登录用户名大多数发行版默认是root如果用Ubuntu有时默认用户叫ubuntu或者直接用密钥登录。密码是创建实例时设置的如果用密钥登录要在控制台提前绑定好私钥文件Xshell连接时需要指定对应的私钥。如果你把密码忘了不用慌云平台基本都支持在控制台重置实例密码重置完记得重启服务器。拿到这三样信息后就可以开始连接了。注意我遇到过不少朋友拿到服务器之后直接在Xshell里填了一个内网IP结果怎么都连不上。云服务器上填的一定是公网IP不是私网IP这个最容易搞混。2. 用Xshell连接Linux服务器的完整过程2.1 下载安装Xshell时的常见纠结Xshell的下载页面很容易让人看迷糊因为它既有家庭版也有评估版官网还时不时改版。最省事的方法是访问官方站点找到“Home / Home School Use”入口填一下姓名和邮箱官方会把下载链接发到你邮箱。这个版本对个人、学生、教师免费使用但注意不要用于商业场景。下载完安装时一路Next就行如果Windows SmartScreen弹出警告选择“仍要运行”即可。还有一个特别常见的问题Xshell 7提示许可过期。这个情况多半是用了商业评估期限或者系统时间不对。我的建议是个人用户直接装官网个人免费版没有必要折腾其他版本。如果你希望在Xshell里看到更舒服的中文字体可以在菜单“工具—选项—外观”里把默认字体改成微软雅黑字号调到14左右连接后的界面会清爽很多。2.2 新建会话从IP到密钥的一步步操作打开Xshell后点“新建”会弹出会话属性窗口。名称随便填比如“我的HoRain云”主机填公网IP协议保持SSH端口号22。确认无误后点“连接”首次连接会弹出“SSH主机密钥确认”提示这是正常现象选择“接受并保存”即可。接着输入用户名root按回车后输入密码。这里有个体验很好的细节Xshell会询问是否记住用户名和密码。个人电脑上可以记住如果是公用电脑建议不要勾选避免密码泄露。登录成功后你会看到命令提示符类似[rootyour-hostname ~]#这说明你已经成功进入Linux系统了。如果你使用的是SSH密钥登录在连接前需要到“会话属性—用户身份验证—方法”里选择Public Key并浏览选择私钥文件。之后的流程和密码登录差不多。2.3 连接成功后先做一次体检连上之后不要急着装Nginx先搞清楚手里这台机器是什么系统。执行uname -a可以看内核版本执行cat /etc/os-release可以看到发行版名称和版本号比如CentOS Stream、Ubuntu 22.04、Debian 12。这一步很重要因为后面安装Nginx使用的命令完全不同。另外用whoami确认当前用户用pwd查看所在目录。如果登录用户不是root比如是ubuntu用户后面很多命令需要加sudo。为了省事我通常会先执行sudo -i切到root再继续操作。3. 安装前必须了解的几个Linux基础3.1 软件源决定你能不能装上NginxLinux安装软件主要靠包管理器。CentOS/RHEL用yum或dnfUbuntu/Debian用apt包管理器会从一个配置好的软件源仓库里下载软件包。Nginx在官方源里虽然有但有些系统默认源里没有比如CentOS的最小安装可能找不到nginx包。遇到找不到包的情况先更新源再重试若还是不行就要考虑启用EPEL扩展源Ubuntu系统则可以先运行apt update刷新索引。理解这一点你才能真正淡定应对各种“No package nginx available”的报错。软件源原理并不复杂你可以把它理解成一个应用商店商店里有没有这个软件决定了你能否直接安装成功。3.2 常用命令先练熟后面才能不慌虽然今天只是装个Nginx但你会发现Linux下干活离不开几条基础命令cd切换目录比如cd /etc/nginxls列出文件ls -la可以看隐藏文件和权限cat查看文件内容比如cat /etc/nginx/nginx.confvim编辑文件按i进入编辑按Esc后输入:wq保存退出systemctl管理服务比如systemctl enable nginxcurl测试访问本地或远程地址ps、ss、netstat查看进程和端口tail查看日志比如tail -f /var/log/nginx/error.log这些命令不用死记多用几次就记住了。你需要建立一个基本概念运行中的服务是进程Nginx就是监听80端口的进程。修改Nginx配置后通常执行reload而不是restart这样可以让Nginx平滑加载新配置不中断现有连接。3.3 中文乱码和Vim编辑器的坑Xshell连接后如果看到中文乱码大概率是客户端编码和服务器编码不一致。解决方法是在Xshell的“文件—属性—终端—编码”里改成UTF-8必要时服务器端执行export LANGzh_CN.UTF-8。另外在Linux里编辑文件时会发现鼠标复制粘贴不好使Vim里右键粘贴会在内容前面多出一堆缩进这是Vim自动缩进导致的。我习惯编辑前先按:set paste再粘贴或者干脆在Windows记事本里把内容写好然后通过cat /etc/nginx/conf.d/test.conf的方式粘贴进去最后按CtrlD结束。这个方法对新手特别友好能省去很多Vim操作上的麻烦。4. 安装Nginx的两种可靠姿势4.1 方法一用系统包管理器快速安装如果你是第一次装Nginx我强烈建议用包管理器安装简单、可控、卸载也干净。下面是不同系统的命令。Ubuntu/Debiansudo apt update sudo apt install nginx -yCentOS/RHELsudo yum install epel-release -y sudo yum install nginx -y安装完成后可以用nginx -v查看版本。如果系统里没有nginx命令检查一下PATH或者重新安装。包管理器安装的Nginx目录布局非常规范主配置在/etc/nginx/nginx.conf站点配置在/etc/nginx/conf.d/默认网页根目录是/usr/share/nginx/html日志在/var/log/nginx/。用systemd管理也是最顺手的systemctl start nginx启动systemctl enable nginx设置开机自启。这套方式的好处是后续排查问题时网上搜到的经验基本都能直接用上。我自己的个人项目基本都用这种方式省心。4.2 方法二源码编译安装满足定制需求如果你需要特定模块比如第三方模块、新版TLS或HTTP/3支持或者系统包管理器里的版本太旧那就走源码编译。整个过程不算复杂但有几个关键点。先安装编译依赖以CentOS为例sudo yum install gcc make pcre-devel zlib-devel openssl-devel -yUbuntu的话依赖略有不同sudo apt install build-essential libpcre3-dev zlib1g-dev libssl-dev -y然后下载Nginx源码并解压wget https://nginx.org/download/nginx-1.24.0.tar.gz tar -zxvf nginx-1.24.0.tar.gz cd nginx-1.24.0配置编译参数时按需选择模块./configure --prefix/usr/local/nginx --with-http_ssl_module --with-http_v2_module make -j2 sudo make install编译安装完成后Nginx被装在/usr/local/nginx启动得用/usr/local/nginx/sbin/nginx。这种方式的缺点也很明显没有集成到systemd里需要自己写service文件后续卸载也不方便。所以我只在有明确定制需求时才会选源码编译。若只是搭个网站或做反向代理包管理器版本足够用了。4.3 两种安装方式怎么选对比项包管理器安装源码编译安装安装难度低一条命令较高依赖工具多版本新旧取决于系统源可自定义目录规范符合系统默认约定集中在自定义路径管理方式systemd直接管理手动或自己写service适用场景绝大多数新手和常规部署需要定制模块、特殊参数如果你已经在这一步卡住了常见问题一般是依赖装不全或者wget下载太慢。源码编译时的configure报错信息一定要仔细看它会明确告诉你缺哪个库。比如报出“the HTTP rewrite module requires the PCRE library”那就说明你没装pcre-devel装上再重新configure即可。源码编译就是这么朴实无华缺什么补什么。5. 启动Nginx从本地验证到公网访问5.1 用systemd把服务拉起来以包管理器安装的Nginx为例安装完成后先测试配置是否合法。执行nginx -t一般会输出syntax is ok和test is successful。然后启动服务sudo systemctl start nginx sudo systemctl enable nginx sudo systemctl status nginx如果status里显示active (running)说明启动成功。此时可以在服务器上执行curl http://127.0.0.1如果返回一段HTML里面带有“Welcome to nginx”字样说明Nginx已经在正常工作。这一步本地自测很有价值它能帮你区分“服务本身有问题”和“公网访问路径有问题”。5.2 防火墙和云控制台安全组缺一不可服务已经起来了但浏览器还是打不开公网IP这种情况十有八九是防火墙或者云平台安全组没放行。这里要分两层检查。第一层是操作系统防火墙。CentOS默认启用firewalldUbuntu一般用ufw。如果是firewalld执行sudo systemctl status firewalld sudo firewall-cmd --add-servicehttp --permanent sudo firewall-cmd --reload如果是ufw执行sudo ufw allow 80/tcp。第二层是云控制台安全组。HoRain云在创建实例后缺省安全组通常只放行了22端口需要在控制台的安全组里添加一条入方向规则协议TCP端口80来源可以填0.0.0.0/0这样所有公网IP都能访问。调整后记得保存。注意很多刚上云的朋友只检查了系统防火墙没想到安全组这一层。结果在服务器上curl正常浏览器却超时多半就是这个原因。5.3 用浏览器访问才算成功配置完成后在本地浏览器地址栏输入http://你的公网IP如果能看到Nginx的欢迎页恭喜你整个链路已经通了。如果访问不了按顺序排查先确定本地能ping通服务器有的云服务器默认禁ping除外再看服务器上80端口是否监听再看防火墙最后看安全组。也可以让朋友用手机流量访问试试这能排除你本地浏览器缓存等因素的影响。6. 配置Nginx别只停在欢迎页6.1 主配置和站点配置的结构包管理器安装的Nginx配置逻辑很清晰。主配置/etc/nginx/nginx.conf里会加载/etc/nginx/conf.d/*.conf或者/etc/nginx/sites-enabled/下的文件。最佳实践是不要直接改主配置而是新建一个站点文件。例如我想让Nginx托管/var/www/myblog目录下的静态文件可以这样写站点配置server { listen 80; server_name myblog.example.com; # 更改为你的域名或IP root /var/www/myblog; index index.html; location / { try_files $uri $uri/ 404; } }保存到/etc/nginx/conf.d/myblog.conf然后执行nginx -t检查语法再systemctl reload nginx让配置生效。如果没有域名server_name可以留空或直接写IP不影响访问。6.2 静态站点与反向代理的快速示例把网页文件放进/var/www/myblog后访问公网IP就能看到页面。如果你想做反向代理比如把本机8080端口跑的Java服务通过80端口对外提供只需要在server块里加一句proxy_passserver { listen 80; server_name api.myblog.com; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }修改后执行nginx -t systemctl reload nginx就能用80端口访问8080的服务了。这里有一个很常见的细节问题如果后端服务需要真实客户端IPNginx转发时默认不会带上必须像上面这样用proxy_set_header把X-Real-IP和X-Forwarded-For传过去否则后端拿到的都是代理服务器IP。Nginx的负载均衡也是类似思路通过upstream定义一组后端服务器请求自动分发到不同节点。这里先不展开等你有真实业务需求再研究也不迟。6.3 日志就是最好的排错助手只要遇到问题不要瞎猜。先看错误日志。Nginx默认错误日志在/var/log/nginx/error.log访问日志在/var/log/nginx/access.log。你可以执行tail -f /var/log/nginx/error.log实时观察然后刷新一次页面立刻就能看到新的报错信息。我就遇到过403查了半天后来发现是网页目录权限不对Nginx工作进程没有读取权限。调整之后用chmod -R or /var/www/myblog解决。日志能让你少走很多弯路遇到任何访问异常第一个动作永远是看日志。7. 常见问题与排查技巧实录7.1 连接阶段的问题排查Xshell连接是第一个会遇到问题的环节下面这张表是我实践中最常遇到的几种情况做成速查表方便你对照排查。问题可能原因快速处理Xshell连接超时IP填错、安全组未放行22、服务器关机检查公网IP、控制台安全组、实例状态连接被拒绝端口不对、SSH服务未启动执行systemctl status sshd或systemctl status ssh密码正确却提示认证失败Ubuntu默认禁止root密码登录或重置密码后未重启使用初始用户登录或在控制台重置密码后重启主机密钥警告系统重装或密钥变更在Xshell中移除旧主机密钥后重新连接连接阶段的核心思路是先确认网络通不通再确认端口通不通最后确认认证信息对不对层层缩小范围通常几分钟就能定位。7.2 安装阶段的问题排查安装Nginx的时候最容易卡在软件源和依赖上。同样整理成速查表问题可能原因快速处理No package nginx available源里没有Nginx启用EPEL或者先执行apt updateconfigure报缺库编译依赖没装全看报错提示安装对应的devel包nginx命令找不到包没装成功或PATH问题重新安装或使用/usr/local/nginx/sbin/nginx80端口被占用已有Apache等其他程序占用用ss -lntp查占用进程停用或改端口遇到安装问题别急着换方法先确认你用的是哪个发行版、哪个包管理器再对照表格里的方向去查基本都能解决。7.3 访问阶段的问题排查服务启动成功后浏览器无法访问是另一个高频问题。速查表如下问题可能原因快速处理浏览器打不开IP安全组、系统防火墙未放行80检查两层防火墙规则403 Forbidden网站目录无权限或index文件不存在检查目录权限和index.html404 Not Found站点配置root路径不对核对location和root500 Internal Server Error配置语法错误或代理目标不可达看error.log执行nginx -t访问阶段有一个原则先本地后公网。本地curl验证服务是否正常再看公网访问是否被拦截这样不会把问题复杂化。8. 再给新手的几条避坑心得8.1 先小后大养成自测习惯很多人习惯一次性把服务装好然后直接访问公网IP一旦失败就无从下手。我的习惯是先本地curl通再测本机IP本机IP通了再看公网访问。一步一步递进能快速定位故障层。另外每次改动Nginx配置务必先执行nginx -t检查通过再reload。别嫌多此一举这个习惯能让你避免很多线上事故。8.2 命令太多记不住建议做一个笔记模板当你开始接触Linux命令量会快速增加。我建议建一个笔记按“连接、软件安装、服务管理、日志排查、配置示例”这几个分类来记录。今天这篇文章里的命令已经足够你完成一次从零到一的部署了。遇到新问题就在笔记里持续补充。我越来越觉得所谓经验丰富无非是踩过的坑记得比别人详细而已。8.3 安全底线不能忘服务器上线后尽量别直接用root密码远程登录尤其是密码比较弱的情况。更稳妥的做法是创建普通用户配置SSH密钥登录关闭密码登录并定期用包管理器更新系统补丁。个人项目如果只是测试阶段不改问题不大但只要服务对公网开放建议把SSH端口、防火墙规则、访问日志都过一遍。这次从HoRain云服务器到Xshell连接再到Nginx安装和访问整个过程其实不算复杂关键是把每一步想明白。我个人最大的体会是云服务器、SSH客户端、Nginx这三样东西组合在一起是如今做个人网站、小应用最常见的起跑线。你在实际操作中如果遇到文章里没写到的情况别急着怀疑自己按“连接、服务、防火墙”三步走一遍大多数问题都能定位出来。希望这份记录能帮你省下几个小时的折腾时间。