ssh 简介
ssh 为 secure shell,是一种网络安全协议,通过加密和认证的方式实现远程安全登录,文件传输等服务。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
但是在近期,OpenSSH 爆出首个远程执行漏洞 CVE-2024-6387 ,这个漏洞允许攻击者在特定条件下绕过身份验证或者执行未被授权的操作
OpenSSH 是一个完整的、开源的 SSH 协议实现工具包
ssh 的三个套件
- SSH 服务器(sshd):SSH 服务器程序(sshd)是在远程主机上运行的服务端守护进程。它监听来自 SSH 客户端的连接请求,验证客户端的身份,并建立安全的通信会话。sshd 是 SSH 的核心部分之一
- SSH 客户端(ssh):SSH 客户端用于从本地计算机连接到远程服务器。它使用 SSH 协议进行加密通信,确保数据在传输过程中不被截获和篡改
- SSH 密钥生成工具(ssh-keygen):ssh-keygen 用于生成公钥/私钥对,增强 SSH 登录的安全性。使用密钥对进行身份验证比传统的密码验证更加安全和方便
SSH 服务端配置文件
服务器端配置
SSH 服务器端系统配置文件放于 /etc/ssh
目录下
用户配置文件放于 ~/.ssh
目录下
主要配置文件有 sshd_config
常用参数
- Port:指定 SSH 服务器监听的端口。默认端口为 22
- ListenAddress:监听地址,通常设置为
0.0.0.0
以监听所有地址 - PermitRootLogin:是否允许 root 用户通过 SSH 登录。出于安全考虑,通常禁用 root 远程登录
- PasswordAuthentication:是否允许使用密码认证。通常在使用基于密钥的认证时禁用密码认证以提高安全性
- PubkeyAuthentication:是否允许使用公钥认证。通常与
PasswordAuthentication
配合使用,确保只有拥有私钥的用户可以登录
可以使用 sshd -T
查看所有配置信息
SSH 服务管理
SSH 服务以守护进程(deamon)形式执行,所以我们可以使用 systemctl
来进行管理
常用命令:
# 查看服务状态
systemctl status sshd.service
# 启动服务
systemctl start sshd.service
# 停止服务
systemctl stop sshd.service
具体可以查看openEuler:系统服务的配置和管理这篇文章
SSH 客户端配置及操作
配置文件
默认位置:~/.ssh/config
以下是一个配置文件的基本示例:
Host alias
HostName remote_host_IP
User username
Port port_number
IdentityFile ~/.ssh/private_key
Compression yes
ForwardAgent yes
常用文件传输工具
SSH 是一种强大的网络安全协议,用于远程登录和文件传输。通过配置 SSH 客户端和服务器,可以有效地管理远程访问和数据传输。scp
和 sftp
是两种常用的文件传输工具,各有特点,适用于不同的场景。
scp
scp
命令用于在本地计算机和远程计算机之间安全地复制文件和目录。scp
通过 SSH 协议进行加密传输。
从服务器下载文件到本地测试:
详细用法参考
sfpt
sftp
是一种交互式文件传输工具,提供比 scp
更丰富的文件操作功能。
启动 SFTP 会话:
sftp username@remotehost
进入交互界面后,我们可以使用 bash 类似的操作指令
- ls :查看文件
- cd:切换工作目录
要方便的传输文件可以使用get
和put
指令