跳到主要内容

基本 SSH 命令列表

您的 Bluehost 账户包含 SSH(安全外壳)访问权限。无论您是服务器管理新手还是有一定经验,了解基本的 SSH 命令都非常重要。
在本指南中,我们将介绍一系列重要命令。这些命令可以帮助您在远程服务器上执行文件移动、系统状态检查等任务。
有关 SSH 协议的更多信息,请参阅以下文章:

  • 什么是 SSH 访问及如何在您的主机账户中启用它
  • 什么是 SSH 连接 - 如何在 PuTTY、Mac 和 Linux 中编辑

  • 什么是 SSH 命令?
  • 基本 SSH 命令列表
  • 如何使用 SSH 命令
  • SSH 密钥管理最佳实践
  • 总结

什么是 SSH 命令?

SSH 命令是用于在不安全网络上建立两个系统之间安全加密通信的工具。它们允许您运行终端会话、安全地移动文件,并为其他应用程序设置安全通道,确保所有交换的数据保持私密并防止未经授权的访问。

基本 SSH 命令列表

以下是最常用的 SSH 命令:
重要提示: 使用 "rm" 命令时请小心,避免删除无法通过恢复找回的重要内容。

命令描述
cat将文件内容打印到屏幕
cat filename.txt将 filename.txt 的内容打印到屏幕
cd -切换到上一个目录
cd ..返回上一级目录
cd /usr/local/apache进入 /usr/local/apache/ 目录
cd ~进入您的主目录
mkdir在服务器指定路径创建新目录或文件夹
scp在本地计算机与远程服务器之间或两个远程服务器之间安全传输文件
cp -a /home/burst/new_design/* /home/burst/public_html/复制所有文件并保留权限,从一个目录到另一个目录
cp复制文件
cp filename filename.backup将 filename 复制为 filename.backup
du显示磁盘使用情况
du -sh以人类可读格式显示当前目录(包括子目录)所占用的总磁盘空间摘要
du -sh *与 du -sh 类似,但针对每个文件和目录,便于查找占用大量空间的文件
file通过查看文件内容尝试判断文件类型
ls *列出目录中的所有文件和目录(注意:原文中的 file* 可能为误写,正确命令应为 ls *
find * -type dxargs -i cp --verbose php.ini
grep在文件中查找匹配模式
grep -v root /etc/passwd显示所有不包含 root 的行
grep root /etc/passwd显示 /etc/passwd 中所有包含 root 的匹配行
kill终止系统进程
kill -9 PID 例如kill -9 431
kill PID 例如kill 10550
使用 top 或 ps ux 获取系统 PID(进程 ID)
last显示谁登录过及登录时间
last -20仅显示最近 20 次登录
last -20 -a显示最近 20 次登录,最后一栏显示主机名
ln创建文件和目录之间的“链接”
ln -s /home/username/tmp/webalizer webstats现在您可以通过 http://www.yourdomain.ext/webstats 在线显示 Webalizer 统计数据
删除符号链接(webstats)不会影响服务器上的原始统计数据
ls列出目录中的文件和目录,相当于 Windows/DOS 中的 dir
ls -al显示所有文件(包括以点开头的隐藏文件)、目录及每个文件的详细属性
more类似 cat,但一次只打开一屏内容
more /etc/userdomains浏览 userdomains 文件
按空格键翻页,按 q 退出
netstat显示所有当前网络连接
netstat -an显示服务器的所有连接,包括源和目标 IP 及端口
netstat -rn显示服务器绑定的所有 IP 的路由表
pico友好且易用的文件编辑器
pico /home/burst/public_html/index.html编辑用户网站的首页
psps 是 process status(进程状态)的缩写,类似 top 命令
用于显示当前运行的进程及其 PID
进程 ID 是唯一标识进程的数字;您可以使用 kill 命令终止服务器上的运行程序
ps aux显示所有系统进程
ps aux --forest显示所有系统进程,并以层级结构组织显示
ps U username显示某个用户的进程
rm删除文件
rm filename.txt删除 filename.txt,通常会询问是否确认删除
rm -f filename.txt删除 filename.txt,不会询问确认
rm -rf tmp/递归删除 tmp 目录及其中所有文件和子目录
tail类似 cat,但只读取文件末尾部分
tail -f /var/log/messages持续监视文件更新
tail /var/log/messages查看 /var/log/messages 文件的最后 20 行(默认)
tail -200 /var/log/messages打印文件最后 200 行到屏幕
top以表格形式显示实时系统进程、内存信息、运行时间及其他有用信息
非常适合管理系统进程、资源,确保服务器运行正常且未过载

top
Shift + M 按内存使用排序
Shift + P 按 CPU 使用排序
touch | 创建空文件
touch /home/burst/public_html/404.html | 在 /home/burst/public_html/ 目录下创建名为 404.html 的空文件
vi | 功能丰富的编辑器
vi /home/burst/public_html/index.html | 编辑用户网站首页
w | 显示当前登录用户及其登录来源
wc -l filename.txt | 显示 filename.txt 中的行数
wc | 统计字数

当前 Shell 进程示例

PIDTTYTIMECOMMAND
10550pts/30:01/bin/csh
10574pts/40:02/bin/csh
10590pts/40:09APP
每行代表一个进程,进程是程序的运行实例。
  • PID(进程 ID)显示进程的编号。
  • TTY 是启动该进程的终端编号。
  • TIME 是进程使用的 CPU 时间。
  • COMMAND 显示执行进程的位置。

如何使用 SSH 命令

您经常需要在同一行使用多个命令。以下是一些示例:

  • | 字符称为管道,将一个程序的输出传递给另一个程序作为输入。
  • | - 这也是管道,将一个程序的数据传递给另一个程序。
  • > - 创建新文件并覆盖已有内容。
  • >> - 追加数据到文件,若文件不存在则创建新文件。
  • < - 从文件中读取输入传递给命令。
  • grep User /usr/local/apache/conf/httpd.conf | more - 从 httpd.conf 中筛选包含 User 的所有行,分页显示结果。
  • last -a > /root/lastlogins.tmp - 将当前登录历史输出到 /root/lastlogins.tmp 文件。
  • netstat -an | grep :80 | wc -l - 显示 Apache(httpd 运行在端口 80)当前的活动连接数。
  • mysqladmin processlist | wc -l - 显示当前 MySQL 的打开连接数。
  • mysqldump -u username -p dbname > file.sql - MySQL 数据库导出。
  • mysql -u username -p database_name < file.sql - 导入 MySQL 数据库。
  • tail -10000 /var/log/exim_mainlog | grep domain.com | more - 获取 /var/log/exim_mainlog 的最后 10000 行,查找所有 domain.com 的出现(点号代表“任意字符”,用反斜杠转义以字面匹配),分页显示结果。
  • tar -zxvf file.tar.gz - 解压 tar.gz 文件。
  • which [perl] - 查找 [perl] 的路径。

SSH 密钥管理最佳实践

安全外壳(SSH)对于安全管理远程服务器至关重要。以下是关键的安全实践:

  • 实施双因素认证(2FA)。通过要求密码和临时验证码,提供额外的安全层。
  • 部署防火墙。限制 SSH 访问仅允许可信 IP 地址或网络,减少未授权访问风险。
  • 禁用 root 登录。在 SSH 配置中禁用直接 root 登录,防止攻击者直接访问 root 账户。
  • 保持 SSH 软件更新。定期更新 SSH 服务器和客户端软件,确保拥有最新的安全功能和补丁,防止已知漏洞被利用。

提升 SSH 连接的安全性,保护您的系统免受潜在威胁。

总结

了解 Linux 中基本的 SSH 命令,可用于安全访问终端、传输文件和隧道各种应用程序。命令包括文件管理命令如 cat、cd、cp、du、file、find、grep、kill、last、ln、ls、more、netstat、pico、ps、rm、tail、top、touch、vi 和 w。使用某些命令时尤其要小心,特别是 "rm" 命令,以避免删除无法恢复的重要内容。