菜鸟科技网

ssh vi 命令

  1. ssh 命令详解:如何远程登录到服务器。
  2. vi 命令详解:如何在服务器上使用 vi 编辑器。
  3. ssh + vi 的组合使用:将两者结合起来,高效地远程编辑文件。

Part 1: ssh 命令详解

ssh (Secure Shell) 是一个用于安全远程登录和管理网络设备的协议和程序,它通过加密所有传输的数据,确保了通信的安全性,是替代不安全的 telnetrlogin 的标准工具。

ssh vi 命令-图1
(图片来源网络,侵删)

基本语法

ssh [用户名@]主机名 [命令]
  • [用户名@]: 可选,指定要登录的远程服务器的用户名,如果省略,则默认使用当前本地系统的用户名。
  • 主机名: 必需,可以是服务器的 IP 地址或域名。
  • [命令]: 可选,在登录后直接执行这个命令,然后退出,如果不提供,则会打开一个交互式 shell。

常用示例

  1. 最基本用法:远程登录 假设你的服务器 IP 是 168.1.100,你想以用户 admin 的身份登录。

    ssh admin@192.168.1.100

    第一次连接时,SSH 会提示你服务器的公钥指纹,你输入 yes 确认后,该主机的信息会被保存在 ~/.ssh/known_hosts 文件中,以后连接就不会再提示了,之后,系统会提示你输入 admin 用户的密码。

  2. 使用指定端口 SSH 服务运行在非标准的 22 端口(2222),使用 -p 选项。

    ssh -p 2222 admin@192.168.1.100
  3. 直接在远程服务器上执行命令 你不需要登录进去再操作,可以直接在本地命令行中指定要执行的远程命令,SSH 会执行完命令后立即返回。

    ssh vi 命令-图2
    (图片来源网络,侵删)
    # 获取远程服务器的磁盘使用情况
    ssh admin@192.168.1.100 "df -h"
    # 在远程服务器上创建一个目录
    ssh admin@192.168.1.100 "mkdir -p ~/new_project"
  4. 通过 SSH 复制文件 (scp) scp (Secure Copy) 是基于 SSH 的文件复制工具,用法类似 cp

    # 将本地文件复制到远程服务器
    scp local_file.txt admin@192.168.1.100:/home/admin/
    # 将远程服务器文件复制到本地
    scp admin@192.168.1.100:/home/admin/remote_file.txt ./
    # 复制整个目录
    scp -r local_dir/ admin@192.168.1.100:/home/admin/

Part 2: vi 命令详解

vi (Visual Editor) 是一个功能强大但学习曲线陡峭的文本编辑器,几乎在所有的 Linux/Unix 系统上默认安装,它有两种主要模式:

  • 普通模式:默认模式,用于导航、复制、粘贴、删除等操作,你不能直接输入文本。
  • 插入模式:用于输入和编辑文本。

vi 的基本工作流程

  1. 打开文件vi filename
  2. 进入插入模式:按 i (在光标前插入), a (在光标后追加), o (在下一行新建) 等。
  3. 编辑文本:像在记事本一样输入文字。
  4. 返回普通模式:按 Esc 键,这是最关键的一步,必须先回到普通模式才能进行其他操作。
  5. 保存并退出:在普通模式下,输入 wq 然后按回车。

常用 vi 命令

命令 作用 备注
启动和退出
vi filename 打开或创建文件
q 退出(如果没有修改)
q! 强制退出(不保存修改)
w 保存文件
wqx 保存并退出 最常用
模式切换
i 在光标前进入插入模式
a 在光标后进入插入模式
o 在当前行下方新建一行并进入插入模式
O 在当前行上方新建一行并进入插入模式
Esc 从任何模式返回普通模式 必记
光标移动 (普通模式)
h, j, k, l 左,下,上,右 核心指法
gg 跳转到文件第一行
G 跳转到文件最后一行
数字 + G 跳转到指定行 (10G 跳转到第10行)
文本操作 (普通模式)
dd 删除(剪切)当前行
数字 + dd 删除(剪切)指定行数 (5dd 删除5行)
yy 复制(yank)当前行
数字 + yy 复制指定行数 (3yy 复制3行)
p 在光标后粘贴
P 在光标前粘贴
u 撤销上一步操作
Ctrl + r 重做(取消撤销)
搜索和替换
/keyword 从光标处向下搜索 keyword n 查找下一个,N 查找上一个
?keyword 从光标处向上搜索 keyword
%s/old/new/g 全局替换 oldnew

Part 3: ssh + vi 的组合使用

这是最核心的场景:你需要在本地通过 SSH 连接到远程服务器,并使用 vi 编辑一个远程文件

标准流程

  1. 通过 ssh 登录到远程服务器 在你的终端(如 macOS 的 Terminal 或 Windows 的 WSL/PuTTY)中输入:

    ssh vi 命令-图3
    (图片来源网络,侵删)
    ssh user@your-server.com

    输入密码后,你就进入了远程服务器的命令行环境。

  2. 使用 vi 打开并编辑文件 你已经在远程服务器的 shell 中了,直接使用 vi 命令打开你想要编辑的文件。

    # 假设你要编辑一个位于 /home/user/config.conf 的文件
    vi /home/user/config.conf

    vi 界面会出现在你的本地终端窗口中,但所有操作都发生在远程服务器上。

  3. 编辑文件 按照 vi 的操作方法进行编辑(按 i 进入插入模式,修改内容,按 Esc 返回普通模式)。

  4. 保存并退出 在普通模式下,输入 wq 并按回车。

    :wq

    编辑器会关闭,你将返回到远程服务器的 shell 提示符,你可以输入 exit 或按 Ctrl+D 退出 SSH 会话,回到你的本地终端。


高级技巧与最佳实践

使用 SSH 密钥对进行无密码登录

每次都输密码很麻烦,强烈建议使用 SSH 密钥对来免除密码输入。

  • 在本地生成密钥对(如果还没有的话):

    ssh-keygen -t rsa -b 4096

    一路回车即可,会在 ~/.ssh/ 目录下生成 id_rsa (私钥) 和 id_rsa.pub (公钥)。

  • 将公钥复制到远程服务器

    # 方法一:使用 ssh-copy-id(最简单)
    ssh-copy-id user@your-server.com
    # 方法二:手动复制
    # 1. 在本地查看公钥内容
    cat ~/.ssh/id_rsa.pub
    # 2. 复制输出的全部内容
    # 3. 登录到远程服务器
    ssh user@your-server.com
    # 4. 在远程服务器上,将公钥内容追加到 authorized_keys 文件
    mkdir -p ~/.ssh
    echo "粘贴刚才复制的公钥内容到这里" >> ~/.ssh/authorized_keys
    # 5. 设置正确的权限(非常重要!)
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys

    完成后,ssh user@your-server.com 就可以直接登录了。

使用配置文件简化连接

如果你经常连接多个服务器,可以在 ~/.ssh/config 文件中为每个服务器设置一个别名。

编辑 ~/.ssh/config 文件(可以用 vi ~/.ssh/config):

# 为我的开发服务器设置一个别名
Host dev-server
    HostName 192.168.1.100
    User admin
    Port 2222
    IdentityFile ~/.ssh/id_rsa_dev
# 为我的生产服务器设置一个别名
Host prod-server
    HostName server.example.com
    User deploy
    IdentityFile ~/.ssh/id_rsa_prod

设置好后,你就可以用非常简单的命令连接了:

ssh dev-server
ssh prod-server

使用更现代的编辑器(可选)

vi 很强大,但如果你觉得它太难用,很多系统也预装了 nano,它更简单直观。

# 在远程服务器上安装 nano (如果需要)
sudo apt-get install nano  # Debian/Ubuntu
sudo yum install nano      # CentOS/RHEL
# 使用 nano 编辑远程文件
ssh user@your-server.com "nano /path/to/file.txt"

或者,在登录后使用:

ssh user@your-server.com
nano /path/to/file.txt

nano 的快捷键显示在屏幕底部,Ctrl+O 保存,Ctrl+X 退出。

  • ssh 是你进入远程服务器的钥匙。
  • vi 是你在服务器上编辑文本的工具。
  • ssh user@server vi file 是最经典的组合,是每个系统管理员和开发者的必备技能。
  • 学习使用 SSH 密钥和配置文件 可以极大地提高你的工作效率。

希望这个详细的指南对你有帮助!

分享:
扫描分享到社交APP
上一篇
下一篇