ssh(1)介绍

在 Linux 中,OpenSSH 是一个广泛使用的开源 SSH 实现,提供了安全的远程登录和文件传输功能。


openssh相关包

1. openssh-clients

  • 作用:这个包包含了 SSH 客户端工具,允许用户从本地机器连接到远程服务器。
  • 包含的主要工具
    • ssh:用于远程登录到服务器。
    • scp:用于安全复制文件到远程服务器或从远程服务器下载文件。
    • sftp:提供交互式的文件传输协议。
    • ssh-keygen:生成和管理 SSH 密钥对。
    • ssh-copy-id:将公钥复制到远程服务器以实现无密码登录。
  • 适用场景:如果你只需要从你的机器连接到其他服务器,而不需要在本机接受 SSH 连接,安装 openssh-clients 就足够了。
  • 安装示例
    • Ubuntu/Debian:
      1
      sudo apt install openssh-client
    • CentOS/RHEL:
      1
      sudo yum install openssh-clients

2. openssh-server

  • 作用:这个包包含了 SSH 服务器端软件,允许其他机器通过 SSH 连接到你的设备。
  • 包含的主要组件
    • sshd:SSH 守护进程,监听指定的端口(默认 22),处理传入的连接请求。
    • 配置文件:/etc/ssh/sshd_config,用于配置服务器的行为(如端口、认证方式等)。
  • 适用场景:如果你想让你的机器作为服务器接受远程登,需要安装 openssh-server
  • 安装和启动
    • Ubuntu/Debian:
      1
      2
      3
      sudo apt install openssh-server
      sudo systemctl start sshd
      sudo systemctl enable sshd
    • CentOS/RHEL:
      1
      2
      3
      sudo yum install openssh-server
      sudo systemctl start sshd
      sudo systemctl enable sshd

3. openssh

  • 作用openssh 通常是一个元包(meta-package)或基础包,包含了 OpenSSH 的核心组件。根据发行版的不同,它可能是客户端和服务器的组合,或者只是提供基本依赖。
  • 内容:具体包含的内容取决于发行版的打包策略:
    • 在某些发行版中,安装 openssh 会同时拉取 openssh-clientsopenssh-server
    • 在其他发行版中,它可能只包含客户端工具或核心库。
  • 安装示例
    • Ubuntu/Debian:
      1
      sudo apt install openssh
    • CentOS/RHEL:
      1
      sudo yum install openssh
  • 检查版本
    1
    ssh -V
    输出类似:OpenSSH_8.9p1 Ubuntu-3ubuntu0.1, OpenSSL 3.0.2 15 Mar 2022

三者之间的关系

  • openssh-clients 是客户端工具的集合,用于发起 SSH 连接。
  • openssh-server 是服务器端软件,用于接受 SSH 连接。
  • openssh 通常是一个总括性包,可能包含上述两者或只是基础组件,具体取决于发行版。

实际使用中的选择

  • 如果你只需要远程登录其他机器:安装 openssh-clients
  • 如果你需要让自己的机器被远程访问:安装 openssh-server
  • 如果你不确定需要什么,安装 openssh 包,通常会提供默认的推荐配置。

查看已安装的包

  • Debian/Ubuntu:
    1
    dpkg -l | grep openssh
  • CentOS/RHEL:
    1
    rpm -qa | grep openssh

ssh命令

在 Linux 中,SSH(Secure Shell)是一种用于安全远程登录和管理的网络协议。它允许用户通过加密的连接访问远程服务器或设备,并在网络上安全地传输数据。SSH 是系统管理员和开发者常用的工具,因为它提供了强大的安全性,防止未经授权的访问和数据窃听。

SSH 的基本特点

  1. 加密通信:SSH 使用加密技术(如公钥和私钥对)保护数据传输,防止中间人攻击。
  2. 远程访问:通过 SSH,你可以登录到远程 Linux 服务器,执行命令、管理文件等。
  3. 多功能性:除了远程终端访问,SSH 还支持文件传输(通过 SCP 或 SFTP)和端口转发。

常用 SSH 工具

在 Linux 中,SSH 服务通常由 OpenSSH 实现。以下是两个主要组件:

  • SSH 客户端:用于连接到远程服务器,命令为 ssh
  • SSH 服务器:运行在远程设备上,接受客户端连接,通常是 sshd(SSH daemon)。

基本用法

假设你想通过 SSH 连接到一台远程服务器,命令如下:

1
ssh 用户名@远程主机IP

例如:

1
ssh [email protected]

首次连接时,系统会提示你确认远程主机的指纹,输入 yes 后会将主机添加到 ~/.ssh/known_hosts 文件中。

身份验证方式

  1. 密码验证:输入远程用户的密码。
  2. 密钥对验证(更安全):
    • 生成密钥对:ssh-keygen -t rsa(或 ed25519)。
    • 将公钥复制到远程服务器:ssh-copy-id 用户名@远程主机IP
    • 之后连接时无需输入密码。

常用选项

其他功能

  1. 远程执行命令
    1
    ssh [email protected] "ls -l"
    这会在远程主机上执行 ls -l 并返回结果。
  2. 文件传输

安装 SSH

大多数 Linux 发行版默认安装了 SSH 客户端。如果需要安装服务器端:

  • Ubuntu/Debian:
    1
    2
    sudo apt update
    sudo apt install openssh-server
  • CentOS/RHEL:
    1
    sudo yum install openssh-server

启动服务:

1
2
sudo systemctl start sshd
sudo systemctl enable sshd

安全性建议

  • 修改默认端口(编辑 /etc/ssh/sshd_config 中的 Port)。
  • 禁用 root 登录(设置 PermitRootLogin no)。
  • 使用密钥认证而非密码。
  • 定期更新 SSH 软件以修补漏洞。

SSH 是 Linux 系统中不可或缺的工具,掌握它可以极大提升远程管理的效率和安全性。