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
- Ubuntu/Debian:
2. openssh-server
- 作用:这个包包含了 SSH 服务器端软件,允许其他机器通过 SSH 连接到你的设备。
- 包含的主要组件:
sshd
:SSH 守护进程,监听指定的端口(默认 22),处理传入的连接请求。- 配置文件:
/etc/ssh/sshd_config
,用于配置服务器的行为(如端口、认证方式等)。
- 适用场景:如果你想让你的机器作为服务器接受远程登,需要安装
openssh-server
。 - 安装和启动:
- Ubuntu/Debian:
1
2
3sudo apt install openssh-server
sudo systemctl start sshd
sudo systemctl enable sshd - CentOS/RHEL:
1
2
3sudo yum install openssh-server
sudo systemctl start sshd
sudo systemctl enable sshd
- Ubuntu/Debian:
3. openssh
包
- 作用:
openssh
通常是一个元包(meta-package)或基础包,包含了 OpenSSH 的核心组件。根据发行版的不同,它可能是客户端和服务器的组合,或者只是提供基本依赖。 - 内容:具体包含的内容取决于发行版的打包策略:
- 在某些发行版中,安装
openssh
会同时拉取openssh-clients
和openssh-server
。 - 在其他发行版中,它可能只包含客户端工具或核心库。
- 在某些发行版中,安装
- 安装示例:
- Ubuntu/Debian:
1
sudo apt install openssh
- CentOS/RHEL:
1
sudo yum install openssh
- Ubuntu/Debian:
- 检查版本:输出类似:
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 的基本特点
- 加密通信:SSH 使用加密技术(如公钥和私钥对)保护数据传输,防止中间人攻击。
- 远程访问:通过 SSH,你可以登录到远程 Linux 服务器,执行命令、管理文件等。
- 多功能性:除了远程终端访问,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
文件中。
身份验证方式
- 密码验证:输入远程用户的密码。
- 密钥对验证(更安全):
- 生成密钥对:
ssh-keygen -t rsa
(或ed25519
)。 - 将公钥复制到远程服务器:
ssh-copy-id 用户名@远程主机IP
。 - 之后连接时无需输入密码。
- 生成密钥对:
常用选项
-p 端口号
:指定非默认端口(默认是 22)。1
ssh -p 2222 [email protected]
-i 密钥文件
:指定私钥文件。1
ssh -i ~/.ssh/mykey [email protected]
其他功能
- 远程执行命令:这会在远程主机上执行
1
ssh [email protected] "ls -l"
ls -l
并返回结果。 - 文件传输:
- 使用
scp
:1
scp 文件名 [email protected]:/远程路径
- 使用
sftp
:1
sftp [email protected]
- 使用
安装 SSH
大多数 Linux 发行版默认安装了 SSH 客户端。如果需要安装服务器端:
- Ubuntu/Debian:
1
2sudo apt update
sudo apt install openssh-server - CentOS/RHEL:
1
sudo yum install openssh-server
启动服务:
1 | sudo systemctl start sshd |
安全性建议
- 修改默认端口(编辑
/etc/ssh/sshd_config
中的Port
)。 - 禁用 root 登录(设置
PermitRootLogin no
)。 - 使用密钥认证而非密码。
- 定期更新 SSH 软件以修补漏洞。
SSH 是 Linux 系统中不可或缺的工具,掌握它可以极大提升远程管理的效率和安全性。