最近开了一台阿里云新加坡轻量应用服务器,系统是 Ubuntu 22.04。第一次从本地连接海外服务器时,需要先确认实例网络和 SSH 端口,再在终端软件里填写连接信息。
这篇文章记录我的入门流程:用 Tabby 建立 SSH 连接、检查服务器状态,再把密码登录换成 SSH 密钥登录。出于安全考虑,我没有公开自己的公网 IP、实例 ID、密码或私钥;文中的服务器地址用 YOUR_SERVER_IP 代替,项目目录统一写成 taest,方便跟着示例操作。
在阿里云轻量应用服务器控制台找到实例,先记录这些信息:
| 信息 | 用途 |
|---|---|
| 公网 IP 地址 | Tabby 连接服务器的地址 |
| SSH 端口 | 默认通常为 22,若改过端口则填写实际端口 |
| 登录用户名 | 初始账号按创建方式和镜像设置,常见为 root |
| 登录凭据 | 服务器密码,或之后配置的 SSH 私钥 |
进入轻量应用服务器实例的防火墙页面,确认有一条允许 SSH 的入方向规则:
轻量应用服务器使用控制台中的防火墙规则管理入方向流量,不使用 ECS 的安全组。Linux 实例通常默认放行 22、80、443 端口,但仍应在控制台检查规则是否存在且已启用。阿里云轻量应用服务器防火墙说明
如果实例内部还启用了 UFW,也要确认对应端口允许通过。Ubuntu 上可以用下面的命令查看状态:
sudo ufw status
如果 UFW 已启用且 SSH 端口没有放行,先添加规则再调整其他防火墙设置:
sudo ufw allow 22/tcp
如果你使用的不是 22 端口,请把命令中的 22 换成实际端口。修改远程登录防火墙时要保留当前 SSH 连接,确认新规则生效后再关闭旧规则,避免把自己锁在服务器外。
Tabby 是一款支持 SSH 的终端工具,也提供连接配置和 SFTP 文件传输等功能。Tabby 官方网站介绍了它内置的 SSH 客户端和连接管理器。
YOUR_SERVER_IP。22,用户名(Username)填写实例实际使用的账号。阿里云轻量服务器没有通用的默认登录密码。若尚未设置密码,可以在控制台重置服务器密码,然后再用 SSH 客户端登录。阿里云轻量应用服务器新手指引
连接成功后会看到类似下面的命令行提示符:
root@iZxxxx:~#
此时已经进入远程 Ubuntu 服务器。注意,终端里运行的命令会作用于服务器,而不是本地电脑。
先确认登录用户、系统版本、磁盘和内存:
whoami
lsb_release -a
df -h
free -h
更新软件包索引并安装系统更新:
sudo apt update
sudo apt upgrade -y
如果更新了内核或系统核心组件,Ubuntu 可能会提示需要重启。可以在确认没有正在运行的重要任务后执行:
sudo reboot
服务器重启后,Tabby 当前连接会断开,等待实例恢复运行后重新连接即可。
下面这些是我连上服务器后常用的命令。可以先记住“我在哪、我是谁、机器状态怎么样”,再去找项目目录。
Linux 命令通常由“命令名 + 选项 + 操作对象”组成。比如:
ls -la /root
ls 是 list 的缩写,表示列出内容。-l 表示长格式(long format),会显示权限、链接数、所有者、所属组、大小和修改时间等信息。-a 表示全部(all),包括名称以 . 开头的隐藏文件。/root 是要查看的目录;省略它时,ls 默认查看当前目录。-l 和 -a 可以合并写成 -la,也可以写成 -al,效果相同。很多 Linux 命令都遵循这种习惯:短选项前面加一个减号,可以组合使用;长选项通常写成 -- 开头,例如 ls --all。
执行 ls -la 后,每一行大致可以这样读:
-rw-r--r-- 1 root root 1234 Sep 24 10:00 notes.txt
│ │ │ │ │ │ └─ 文件名
│ │ │ │ │ └─ 修改时间
│ │ │ │ └─ 文件大小(字节)
│ │ │ └─ 所属组
│ │ └─ 所有者
│ └─ 硬链接数量
└─ 文件类型和权限
开头的权限串里,第一位表示类型(- 普通文件、d 目录、l 软链接),后面每三位一组,分别是所有者、所属组和其他用户的读(r)、写(w)、执行(x)权限。
| 写法 | 英文记法 | 好记的意思 |
|---|---|---|
pwd | print working directory | 打印当前工作目录,看看“我在哪” |
whoami | who am I | 我是谁,显示当前用户名 |
id | identity | 查看用户的 UID、GID 和所属组 |
hostname | host name | 这台主机的名字 |
cd | change directory | 切换目录 |
ls | list | 列出目录内容 |
mkdir | make directory | 创建目录 |
cat | concatenate | 原意是连接文件;常用来直接显示文件内容 |
cp | copy | 复制文件或目录 |
mv | move | 移动或重命名文件 |
rm | remove | 删除文件或目录 |
df | disk free | 查看文件系统还剩多少空间 |
du | disk usage | 查看文件或目录占用了多少空间 |
nproc | number of processing units | 查看可用的处理器数量 |
ps | process status | 查看进程状态 |
ss | socket statistics | 查看网络套接字和监听端口 |
grep | global regular expression print | 按文本模式查找匹配内容 |
uname | Unix name | 查看系统和内核信息 |
apt | Advanced Package Tool | Ubuntu 上安装和更新软件包的工具 |
chmod | change mode | 修改文件权限 |
chown | change owner | 修改文件所有者 |
有些常用写法不是英文首字母缩写,而是看参数来理解:
| 参数 | 英文记法 | 例子和含义 |
|---|---|---|
-a | all | ls -a:显示全部内容,包括隐藏文件 |
-l | long | ls -l:用详细的长格式显示 |
-h | human-readable | df -h、free -h:用 KB、MB、GB 等易读单位显示 |
-R | recursive | ls -R:递归列出子目录 |
-d | directory | ls -ld /bin:查看目录本身的信息,而不是列出目录里的内容 |
例如 ss -tlnp 可以拆成:-t 只看 TCP、-l 只看正在监听的端口、-n 直接显示数字端口、-p 同时显示相关进程。ps aux 中 a、u、x 是组合选项,用来查看更多用户和不挂在终端上的进程;这类老命令选项不一定都能按一个英文单词直译,记住它的用途更实用。
命令帮助可以用 命令 --help 查看,例如 ls --help。也可以用 man ls 打开手册页,按 /关键词 搜索,按 q 退出。记忆英文是帮助理解,具体行为还是以当前系统里的帮助信息为准。
命令行里还有几个常见连接符:| 是管道,把左边命令的输出交给右边命令;&& 表示左边成功后才运行右边;; 表示依次执行,前一条成功与否都继续执行。例如 df -h; free -h; uptime 会连续查看磁盘、内存和运行时间。
重定向也很常见。以 find / -type d -name ".git" 2>/dev/null 为例:2> 把错误输出重定向,/dev/null 是系统里的“丢弃口”,所以 2>/dev/null 的效果就是不显示错误信息。它不会隐藏正常找到的结果。
| 写法 | 英文记法 | 含义 |
|---|---|---|
head | head | 看文件或输出的开头;默认显示前 10 行 |
tail | tail | 看文件或输出的末尾;常用来查看日志最后几行 |
wc | word count | 统计行数、单词数或字符数;wc -l 只统计行数 |
systemctl | system control | 管理 systemd 服务,例如查看 SSH 服务状态 |
sudo | 常记作 “superuser do” | 临时以管理员权限运行命令;运行前要确认命令内容 |
例如:
ps aux | head # 把进程列表交给 head,只看开头几行
ls /usr/bin | wc -l # 列出命令,再统计输出行数
tail -n 50 ~/deploy.log # 看日志最后 50 行;-n 指定行数
find / -name "package.json" 2>/dev/null # 找文件,同时丢弃错误输出
记住一条就够用:先认命令名,再看减号后面的选项,最后看路径或文件名;遇到不熟悉的写法,先查 --help 或 man,不要直接给不懂的命令加 sudo。
| 命令 | 作用 | 例子 |
|---|---|---|
pwd | 显示当前所在目录 | 输出 /root |
whoami | 显示当前用户名 | 输出 root |
hostname | 查看这台机器的主机名 | 输出当前主机名 |
id | 查看用户 ID 和所属用户组 | 输出 UID、GID 和 groups |
ls # 列出当前目录
ls -la # 显示详细信息和隐藏文件
ls -R # 递归列出子目录
cd / # 切换到根目录
cd ~ # 回到当前用户的家目录
tree -L 2 # 用树状结构显示两层目录
Ubuntu 默认可能没有 tree,需要先安装:
sudo apt update && sudo apt install tree -y
项目通常放在家目录、/opt 或 /var/www。先看常见位置:
ls -la ~
ls -la /home /opt /var/www
也可以按项目特征搜索:
find / -type d -name ".git" 2>/dev/null
find / -name "package.json" 2>/dev/null
find / -type d -name "*taest*" 2>/dev/null
全盘搜索可能比较慢;如果已经大致知道项目放在哪里,先把 / 换成 ~、/opt 或 /var/www,会更快一些。项目目录的例子统一写作 taest:
cd ~/taest && ls -la
cd / && ls -la # 查看根目录下的主要目录
ls -ld /bin /sbin /lib # 查看系统目录及软链接信息
ls /usr/bin | wc -l # 粗略统计 /usr/bin 中的命令数量
cat /etc/os-release # 查看 Ubuntu 发行版信息
uname -a # 查看内核和系统架构信息
Ubuntu 中 /bin、/sbin、/lib 常会链接到 /usr 下对应目录。检查 /tmp 时要记得它用于临时文件,系统可能按自身策略定期清理其中的内容。
df -h # 查看各文件系统的磁盘使用量
du -sh ~/* # 查看家目录下各项的大小
free -h # 查看内存使用情况
nproc # 查看可用 CPU 核数
uptime # 查看运行时间和系统负载
top # 实时查看进程,按 q 退出
ps aux | head # 快速查看进程列表
w # 查看当前登录用户和活动
ip addr # 查看网卡和 IP 地址
ss -tlnp # 查看 TCP 监听端口及进程
systemctl list-units --type=service --state=running # 查看运行中的服务
进入项目目录后,可以用下面这些命令快速判断项目结构和最近的改动:
cd ~/taest && ls -la
git log --oneline -5 # 查看最近 5 次提交
git remote -v # 查看 Git 远程仓库地址
cat requirements.txt # 查看 Python 项目的依赖清单(如果有)
cat package.json # 查看 Node.js 项目的依赖和脚本(如果有)
tail -n 50 ~/deploy.log # 查看部署日志的最后 50 行
history # 查看当前账号的命令历史
查看配置、日志或命令历史时,注意不要把密码、访问令牌、私钥等凭据复制到公开位置。
/ 根目录,整个文件系统的起点
├── etc/ 系统和服务配置,例如 SSH、Nginx 配置
├── home/ 普通用户的家目录
├── root/ root 用户的家目录
├── opt/ 常见的第三方软件或自建项目目录
├── var/ 经常变化的数据
│ ├── log/ 系统和服务日志
│ └── www/ 常见的网站文件目录
├── usr/ 大量系统程序和共享文件
├── bin/ 基础命令,Ubuntu 上常链接到 /usr/bin
├── tmp/ 临时文件目录,内容可能被系统清理
└── proc/ 提供进程和内核信息的虚拟文件系统
我自己的记法是:配置先去 /etc 找,项目先看 /home、/opt 和 /var/www,日志先看 /var/log,系统命令通常在 /usr/bin。
pwd; whoami; ls -la # 我在哪、我是谁、当前目录有什么
cd / && ls -la # 看系统根目录
find ~ -name ".git" 2>/dev/null # 在家目录下找 Git 项目
df -h; free -h; uptime # 快速看磁盘、内存和负载
cd ~/taest && ls -la # 进入项目目录
熟悉这些基础命令后,遇到“项目在哪、端口有没有监听、磁盘是否满了”这类问题,就可以先在 Tabby 里自己定位。
密码可以用于首次连接,但日常管理更适合使用 SSH 密钥。私钥留在自己的电脑上,服务器只保存与之对应的公钥;不要把私钥上传到服务器或提交到 Git 仓库。
在本地 PowerShell 中运行:
ssh-keygen -t ed25519 -C "aliyun-tabby"
按提示选择保存位置,并为私钥设置一个口令。默认密钥通常保存在:
C:\Users\你的用户名\.ssh\id_ed25519
C:\Users\你的用户名\.ssh\id_ed25519.pub
其中 .pub 文件是公钥,可以放到服务器;没有 .pub 后缀的文件是私钥,只留在本地。
先用 Tabby 的密码方式连接服务器,然后在服务器终端运行:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
在本地 PowerShell 显示公钥内容:
Get-Content "$env:USERPROFILE\.ssh\id_ed25519.pub"
复制整行公钥,粘贴到服务器的 authorized_keys 文件中。保存退出后执行:
chmod 600 ~/.ssh/authorized_keys
然后在 Tabby 的 SSH 配置中选择密钥认证,并指向本地 id_ed25519 私钥文件。先新开一个 Tabby 连接测试密钥确实能登录,再考虑关闭密码认证;不要在密钥登录验证成功前关闭密码登录。
优先检查公网 IP 是否正确、实例是否运行,以及阿里云防火墙有没有放行 SSH 端口。若使用了 UFW 等系统防火墙,也要检查系统内部规则。阿里云建议在无法远程连接时逐项检查端口放行和本地网络。远程连接常见问题
这通常表示网络已经到达服务器,但目标端口没有 SSH 服务监听,或端口填写不正确。可以通过阿里云 Workbench 登录后检查服务:
sudo systemctl status ssh
sudo ss -tlnp | grep ssh
Ubuntu 的 SSH 服务单元通常名为 ssh。如果服务没有运行,可以检查安装和启动状态:
sudo apt install openssh-server
sudo systemctl enable --now ssh
检查 Tabby 中的用户名、认证方式和密钥路径。密码登录时要确认密码是当前服务器密码;密钥登录时确认服务器 authorized_keys 中保存的是配对的公钥,并检查目录和文件权限。
这台服务器的连接流程可以概括为:在阿里云确认公网 IP 和 SSH 端口、检查防火墙规则、在 Tabby 保存 SSH 配置,首次连接后完成系统更新,再切换为密钥登录。
海外服务器的访问速度会受本地网络、运营商路由、实例地域和线路等因素影响。新加坡只是实例所在地域,具体体验还要以自己的网络测试为准。配置完成后,Tabby 可以保存连接配置,后续打开配置就能登录,也可以使用 SFTP 浏览和传输服务器文件。
正在加载评论...