凌峰创科服务平台

SSH连接Linux服务器工具有哪些?

目录

  1. 什么是 SSH?
  2. 为什么 SSH 如此重要?
  3. 如何使用 SSH?
    • 1 基础用法:首次连接
    • 2 常用连接参数
    • 3 安全地执行命令
    • 4 安全地传输文件
    • 5 图形化 SSH 客户端工具推荐
  4. SSH 进阶与安全配置
    • 1 使用 SSH 密钥对进行无密码登录
    • 2 SSH 配置文件 (~/.ssh/config)
    • 3 端口转发(隧道)

什么是 SSH?

SSH (Secure Shell),中文为“安全外壳协议”,是一种加密的网络协议,主要用于安全地在客户端和服务器之间进行通信。

SSH连接Linux服务器工具有哪些?-图1
(图片来源网络,侵删)

它就像一个加密的、功能强大的远程控制台,当你通过 SSH 连接到一台 Linux 服务器时,你就在那台服务器上获得了一个命令行终端,你可以像坐在电脑前一样输入命令、管理文件、运行程序,而所有传输的数据(包括你的密码)都是经过加密的,无法被轻易窃听。

为什么 SSH 如此重要?

在 SSH 出现之前,人们使用 Telnet、FTP 等协议来远程管理服务器,这些协议有一个致命的缺点:所有数据都是明文传输的,这意味着你的用户名、密码、你执行的命令都会在网络上“裸奔”,非常不安全。

SSH 的出现解决了这个问题,它带来了革命性的优势:

  • 加密传输:所有数据都经过加密,防止信息泄露。
  • 身份验证:提供两种主要的验证方式:密码和密钥对,密钥对验证比密码更安全。
  • 数据完整性:确保传输的数据在传输过程中没有被篡改。
  • 多功能性:不仅可以远程登录,还可以安全地传输文件(scp, sftp)和创建安全的网络隧道。

SSH 是现代 Linux/Unix 系统管理员和开发者的必备工具

SSH连接Linux服务器工具有哪些?-图2
(图片来源网络,侵删)

如何使用 SSH?

1 基础用法:首次连接

你的电脑上需要有 SSH 客户端,几乎所有现代操作系统(Linux, macOS, Windows 10/11)都默认内置了 ssh 命令。

假设你的服务器 IP 地址是 168.1.100,用户名是 root

在终端中输入以下命令:

ssh root@192.168.1.100
  • ssh:是客户端程序。
  • root@:表示你要以 root 这个用户的身份登录。
  • 168.1.100:是服务器的 IP 地址或域名。

首次连接的提示: 第一次连接时,系统会提示你无法确认服务器的真实性(因为你还没有它的“指纹”),这是正常的安全机制,系统会显示服务器的公钥指纹,并询问你是否继续。

SSH连接Linux服务器工具有哪些?-图3
(图片来源网络,侵删)
The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

输入 yes 并回车,系统会将该服务器的信息记录在你的 ~/.ssh/known_hosts 文件中,下次连接就不会再提示了。

输入密码: 之后,系统会提示你输入密码。你输入的密码是不会显示在屏幕上的(光标不会移动),这是正常的安全特性。 输入完毕后直接按回车。

如果密码正确,你将成功登录到服务器的命令行界面,看到类似 root@server:~# 的提示符。

2 常用连接参数

ssh 命令非常灵活,可以通过参数来改变其行为。

  • 指定端口:如果服务器的 SSH 服务不是默认的 22 端口,使用 -p 参数。

    ssh -p 2222 user@192.168.1.100
  • 指定私钥文件:如果你使用 SSH 密钥登录,可以用 -i 参数指定私钥文件路径。

    ssh -i ~/.ssh/my_custom_key user@192.168.1.100
  • 指定连接用户:也可以不写在 前面,而用 -l 参数。

    ssh -l admin 192.168.1.100
  • 启用详细输出-v 参数可以显示详细的连接过程,对于排查连接问题非常有用。

    ssh -v user@192.168.1.100

3 安全地执行命令

你不仅可以登录后交互式地操作,还可以直接在本地命令行上让远程服务器执行一个命令,并返回结果。

语法:ssh user@host "command"

示例:

  • 在远程服务器上查看磁盘使用情况:
    ssh root@192.168.1.100 "df -h"
  • 在远程服务器上查看某个文件的最后 10 行:
    ssh root@192.168.1.100 "tail -n 10 /var/log/nginx/error.log"

4 安全地传输文件

SSH 协议包含了两个强大的文件传输工具:

  1. scp (Secure Copy):用于在本地和远程之间复制文件。

    • 从本地复制到远程

      # 复制单个文件
      scp local_file.txt root@192.168.1.100:/remote/path/
      # 复制整个目录(需要加 -r 参数)
      scp -r local_folder/ root@192.168.1.100:/remote/path/
    • 从远程复制到本地

      # 复制单个文件
      scp root@192.168.1.100:/remote/path/remote_file.txt ./
      # 复制整个目录
      scp -r root@192.168.1.100:/remote/path/remote_folder/ ./
  2. sftp (SSH File Transfer Protocol):提供了一个交互式的、类似 FTP 的安全文件传输会话。

    sftp root@192.168.1.100

    连接成功后,你会进入 sftp> 提示符,可以使用如下命令:

    • ls:列出远程文件
    • cd:切换远程目录
    • lcd:切换本地目录
    • get file.txt:从远程下载文件
    • put local_file.txt:上传文件到远程
    • bye:退出 sftp

5 图形化 SSH 客户端工具推荐

如果你不习惯使用命令行,也有很多优秀的图形化工具(SSH 客户端)。

  • Windows 平台:

    • PuTTY: 经典老牌,轻量级,功能单一但专注。
    • MobaXterm: 非常强大,集成了 SSH、X11 服务器、文件传输、多种网络工具等,是 Windows 用户的神器。
    • Xshell: 功能强大,界面友好,支持标签页,有免费版。
    • Windows Terminal / Windows 11 Terminal: 现代化的终端应用,可以很好地集成 ssh 命令。
  • macOS 平台:

    • 内置 Terminal: 直接使用 ssh 命令。
    • Blink Shell: 高度可定制的终端,支持多路复连,体验极佳。
    • Termius: 界面美观,支持 SSH、SFTP、Mosh 等。
  • Linux 平台:

    • 内置 Terminal: 直接使用 ssh 命令。
    • GNOME Terminal / Konsole: 强大的桌面终端。
    • Remmina: 功能全面的远程桌面客户端,也支持 SSH。

SSH 进阶与安全配置

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

使用密码登录虽然方便,但容易受到暴力破解攻击,更安全的方式是使用SSH 密钥对

它的工作原理是:你生成一对密钥(一个公钥和一个私钥),将公钥放到服务器上,私钥保存在你的本地电脑上,登录时,服务器会用你的公钥来加密一个“质询”,你的本地电脑必须用对应的私钥才能解开,从而证明你的身份。

操作步骤:

  1. 在本地电脑上生成密钥对(如果还没有的话):

    # 一路按回车即可,使用默认的文件名和路径
    ssh-keygen -t ed25519 -C "your_email@example.com"

    这会在 ~/.ssh/ 目录下生成 id_ed25519(私钥)和 id_ed25519.pub(公钥)两个文件。

  2. 将公钥复制到服务器上: 有两种方法:

    • 使用 ssh-copy-id 命令(最简单)

      # 这条命令会自动将你的公钥追加到服务器上用户的 ~/.ssh/authorized_keys 文件中
      ssh-copy-id -i ~/.ssh/id_ed25519.pub user@192.168.1.100

      它会提示你输入一次该用户的密码,完成后,下次登录就可以直接使用密钥,无需输入密码了。

    • 手动复制

      # 1. 在本地查看公钥内容
      cat ~/.ssh/id_ed25519.pub
      # 2. 复制输出的全部内容
      # 3. 登录到服务器
      ssh user@192.168.1.100
      # 4. 在服务器上,确保 .ssh 目录存在且权限正确
      mkdir -p ~/.ssh
      chmod 700 ~/.ssh
      # 5. 将刚才复制的公钥内容追加到 authorized_keys 文件中
      echo "粘贴你复制的公钥内容到这里" >> ~/.ssh/authorized_keys
      # 6. 设置 authorized_keys 文件的权限
      chmod 600 ~/.ssh/authorized_keys

2 SSH 配置文件 (~/.ssh/config)

每次都输入 ssh user@host -p port 很麻烦,你可以使用 ~/.ssh/config 文件来为每个服务器创建一个“别名”。

打开或创建 ~/.ssh/config 文件(在 Windows 上是 C:\Users\YourUsername\.ssh\config),然后添加如下内容:

# 服务器别名
Host my-server
    HostName 192.168.1.100
    User root
    Port 22
    IdentityFile ~/.ssh/id_ed25519
    # 可选:禁用密码登录,强制使用密钥
    # PasswordAuthentication no
# 另一个服务器
Host web-server
    HostName example.com
    User deploy
    Port 2222
    IdentityFile ~/.ssh/deploy_key

你只需要输入 ssh my-server 就能连接到第一台服务器,输入 ssh web-server 就能连接到第二台,非常方便!

3 端口转发(隧道)

SSH 的一个强大功能是“端口转发”,也叫“隧道”,它可以通过 SSH 连接,将一个端口的流量安全地“隧道”到另一个地方。

  • 本地转发:将你本地电脑的一个端口,映射到远程服务器的一个端口,常用于访问远程服务器上只允许本机访问的服务(如数据库)。

    # 将本地的 3307 端口流量,通过 my-server 转发到其本地的 3306 (MySQL) 端口
    ssh -L 3307:localhost:3306 my-server

    之后,你可以在本地用 localhost:3307 来访问远程服务器上的 MySQL 数据库。

  • 远程转发:将远程服务器的一个端口,映射到你的本地电脑,较少用,但场景特定。


SSH 是连接和管理 Linux 服务器的基石,它安全、高效且功能强大。

  • 对于初学者:掌握 ssh user@hostscpsftp 的基本用法,就能完成大部分日常操作。
  • 对于进阶用户:强烈建议配置 SSH 密钥对和 ~/.ssh/config 文件,这会极大地提升你的工作效率和安全性。
  • 对于系统管理员:深入理解端口转发和 SSH 服务器端的精细配置(如修改端口、禁用 root 登录等)是保障服务器安全的关键。

希望这份详细的指南能帮助你熟练掌握 SSH 工具!

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