Linux SSH连接
Linux SSH连接
1 Openssh组件
OpenSSH 是一个非常流行的开源软件套件,用于提供安全的远程登录和其他网络服务。以下是关于 OpenSSH 的详细介绍:
1.1 什么是 OpenSSH?
OpenSSH 是一个基于 SSH(Secure Shell)协议的开源实现,旨在提供安全的远程登录和文件传输功能。它通过加密技术保护数据在网络传输过程中的安全,防止数据被窃听、篡改或中间人攻击。
1.2 主要组件
OpenSSH 包含以下几个主要组件:
sshd (SSH Daemon):
- 功能:这是一个后台服务程序,负责处理来自客户端的连接请求,并提供安全的会话。
- 配置文件:
/etc/ssh/sshd_config
- 启动和管理:
1
2
3sudo systemctl start sshd
sudo systemctl enable sshd
sudo systemctl status sshd
ssh (SSH Client):
- 功能:这是一个命令行工具,用于从本地机器安全地连接到远程主机。
- 常用选项:
-i
:指定身份文件(私钥)-p
:指定远程主机的端口号-l
:指定登录用户名-v
:增加详细级别,显示调试信息
scp (Secure Copy):
- 功能:用于在本地和远程主机之间安全地复制文件。
- 常用命令:
1
2scp local_file user@remote_host:/remote_directory/
scp user@remote_host:/remote_file local_directory/
sftp (Secure File Transfer Protocol):
- 功能:提供了一个交互式的文件传输界面,类似于 FTP,但使用 SSH 协议进行加密。
- 常用命令:
1
sftp user@remote_host
ssh-keygen:
- 功能:用于生成、管理和转换认证密钥对(公钥和私钥)。
- 常用命令:
1
ssh-keygen -t rsa -b 4096
ssh-agent:
- 功能:用于管理多个 SSH 密钥的身份验证代理。
- 常用命令:
1
2eval `ssh-agent -s`
ssh-add ~/.ssh/id_rsa
1.3 安全特性
加密通信:
- OpenSSH 使用多种加密算法(如 AES、RSA、ECDSA 等)来保护数据传输的安全性。
身份验证:
- 支持多种身份验证方法,包括密码、公钥、证书和 Kerberos 等。
密钥管理:
- 提供了生成、管理和存储密钥的工具,确保密钥的安全性。
防火墙和端口转发:
- 支持端口转发和隧道功能,可以在不安全的网络环境中建立安全的通信通道。
1.4 配置
sshd 配置文件:
- 位置:
/etc/ssh/sshd_config
- 常用配置项:
Port
:指定 SSH 服务监听的端口号PermitRootLogin
:控制是否允许 root 用户登录PasswordAuthentication
:控制是否允许密码认证PubkeyAuthentication
:控制是否允许公钥认证AllowUsers
和DenyUsers
:指定允许或拒绝特定用户登录AllowGroups
和DenyGroups
:指定允许或拒绝特定用户组登录
- 位置:
ssh 配置文件:
- 位置:
~/.ssh/config
- 常用配置项:
Host
:定义特定主机的配置User
:指定默认的登录用户名Port
:指定默认的端口号IdentityFile
:指定默认的身份文件
- 位置:
1.5 常见命令示例
启动和停止 SSH 服务:
1
2
3
4sudo systemctl start sshd
sudo systemctl stop sshd
sudo systemctl restart sshd
sudo systemctl status sshd生成密钥对:
1
ssh-keygen -t rsa -b 4096
添加密钥到远程主机:
1
ssh-copy-id user@remote_host
使用 SSH 登录远程主机:
1
ssh user@remote_host
使用 SCP 复制文件:
1
scp local_file user@remote_host:/remote_directory/
使用 SFTP 传输文件:
1
sftp user@remote_host
2 Openssh的使用
在 Ubuntu 系统中,OpenSSH 的相关包名称如下:
- openssh-server:这是 OpenSSH 服务器包,包含了
sshd
守护进程,用于提供 SSH 服务。 - openssh-client:这是 OpenSSH 客户端包,包含了
ssh
、scp
、sftp
等命令行工具,用于连接到 SSH 服务器。
2.1 安装 OpenSSH 服务器
如果你需要安装 OpenSSH 服务器,可以使用以下命令:
1 | sudo apt update |
2.2 安装 OpenSSH 客户端
如果你需要安装 OpenSSH 客户端,可以使用以下命令:
1 | sudo apt update |
2.3 检查已安装的 OpenSSH 包
你可以使用以下命令来检查系统上是否已经安装了 OpenSSH 服务器和客户端:
1 | dpkg -l | grep openssh |
这将列出所有与 OpenSSH 相关的已安装包。
2.4 启动和启用 SSH 服务
安装完成后,你可以启动并启用 SSH 服务,使其在系统启动时自动运行:
1 | sudo systemctl start ssh |
2.5 检查 SSH 服务状态
你可以使用以下命令来检查 SSH 服务的状态:
1 | sudo systemctl status ssh |
这将显示 SSH 服务的当前状态,包括是否正在运行、最近的日志条目等信息。
2.6 配置 SSH 服务
SSH 服务的配置文件位于 /etc/ssh/sshd_config
。你可以编辑这个文件来修改 SSH 服务的配置,例如更改监听端口、设置允许的用户等:
1 | sudo nano /etc/ssh/sshd_config |
修改配置后,记得重启 SSH 服务以应用更改:
1 | sudo systemctl restart ssh |
3 SSH 密钥对
SSH 密钥对用于安全地进行身份验证,替代传统的密码认证。不同ssh服务其之间对于ssh密钥类型的支持可能不同,以下是几种常见的 SSH 密钥类型及其特点:
3.1 . RSA (Rivest-Shamir-Adleman)
- 算法:基于大数因式分解的难度。
- 默认长度:2048 位,但可以生成更长的密钥(如 4096 位)以提高安全性。
- 安全性:相对较低,但仍广泛使用,特别是在较老的系统中。
- 命令:
1
ssh-keygen -t rsa -b 4096
3.2 . DSA (Digital Signature Algorithm)
- 算法:基于离散对数问题。
- 默认长度:1024 位。
- 安全性:已经不推荐使用,因为被认为不够安全。
- 命令:
1
ssh-keygen -t dsa
3.3 . ECDSA (Elliptic Curve Digital Signature Algorithm)
- 算法:基于椭圆曲线离散对数问题。
- 默认长度:256 位(NIST P-256)、384 位(NIST P-384)、521 位(NIST P-521)。
- 安全性:较高,计算效率较好。
- 命令:
1
ssh-keygen -t ecdsa -b 521
3.4 . Ed25519
- 算法:基于 EdDSA(Edwards-curve Digital Signature Algorithm)。
- 默认长度:256 位。
- 安全性:非常高,计算效率高,被认为是目前最安全的密钥类型之一。
- 命令:
1
ssh-keygen -t ed25519
3.5 . ECDSA-SK (Elliptic Curve Digital Signature Algorithm with Security Key)
- 算法:基于椭圆曲线离散对数问题,结合硬件安全密钥(如 YubiKey)。
- 默认长度:256 位(NIST P-256)。
- 安全性:非常高,结合硬件安全密钥提供额外的安全性。
- 命令:
1
ssh-keygen -t ecdsa-sk
3.6 . Ed25519-SK (Ed25519 with Security Key)
- 算法:基于 EdDSA,结合硬件安全密钥(如 YubiKey)。
- 默认长度:256 位。
- 安全性:非常高,结合硬件安全密钥提供额外的安全性。
- 命令:
1
ssh-keygen -t ed25519-sk
3.7 选择合适的密钥类型
- 安全性:Ed25519 和 Ed25519-SK 是目前最安全的密钥类型,推荐在新系统中使用。
- 兼容性:RSA 是最兼容的密钥类型,适用于大多数系统,但建议使用较长的密钥长度(如 4096 位)。
- 性能:ECDSA 和 Ed25519 在计算效率上优于 RSA,适用于资源受限的环境。
3.8 生成 SSH 密钥对
生成 SSH 密钥对的通用命令格式如下:
1 | ssh-keygen -t <type> -b <bits> |
<type>
:密钥类型(如rsa
,ecdsa
,ed25519
)。<bits>
:密钥长度(如4096
位)。
3.9 示例
生成一个 4096 位的 RSA 密钥对:
1 | ssh-keygen -t rsa -b 4096 |
生成一个 Ed25519 密钥对:
1 | ssh-keygen -t ed25519 |
生成一个 521 位的 ECDSA 密钥对:
1 | ssh-keygen -t ecdsa -b 521 |