SSH/SCP 常用参数配置指南
概述
在日常运维工作中,需要连接各种不同版本的Linux系统,从老旧的CentOS 6.6到现代的Debian 12,再到嵌入式的OpenWrt系统。不同系统对SSH的支持程度不同,因此需要使用不同的参数组合来确保连接成功。
SSH 常用参数详解
1. 兼容性相关参数
-o HostKeyAlgorithms=+ssh-rsa
- 含义: 启用SSH-RSA主机密钥算法支持
- 应用场景:
- 连接老旧Linux系统(如CentOS 6.x/7.x)
- OpenWrt等嵌入式系统
- 新版OpenSSH默认禁用了SHA-1相关算法,此参数强制启用
- 示例:
-o PubkeyAcceptedAlgorithms=+ssh-rsa
- 含义: 启用SSH-RSA公钥认证算法支持
- 应用场景:
- 与老系统进行密钥认证时必需
- OpenSSH 8.2+ 版本默认禁用,需要显式启用
- 通常与
HostKeyAlgorithms
参数配合使用
- 示例:
2. 安全相关参数
-o StrictHostKeyChecking=no
- 含义: 跳过主机密钥验证
- 应用场景:
- 首次连接新主机
- 临时连接或测试环境
- 主机密钥发生变化时的紧急连接
- 安全警告: ⚠️ 生产环境慎用,存在中间人攻击风险
- 示例:
3. 认证相关参数
-i <密钥文件路径>
- 含义: 指定私钥文件路径
- 应用场景:
- 使用非默认位置的密钥文件
- 为不同服务器使用不同密钥
- Windows环境下的密钥文件路径指定
- 示例:
4. 连接相关参数
-p <端口号>
- 含义: 指定SSH连接端口
- 应用场景:
- 非标准端口的SSH服务
- 安全加固后的系统
- 端口转发或代理环境
- 示例:
-t
- 含义: 强制分配伪终端(TTY)
- 应用场景:
- 需要交互式shell的场景
- 连接到busybox或ash shell
- 执行需要终端环境的命令
- 示例:
SCP 常用参数详解
1. 端口参数
-P <端口号>
- 含义: 指定SCP传输端口(注意大写P)
- 应用场景: 与SSH的
-p
参数作用相同,但SCP使用大写P
- 示例:
2. 传输相关参数
-r
- 含义: 递归复制目录及其内容
- 应用场景: 复制整个目录结构
- 示例:
-O
- 含义: 使用原始SCP协议而非SFTP协议
- 应用场景:
- 老旧系统不支持SFTP
- 网络环境对SFTP支持有问题
- OpenSSH 8.0+ 版本建议使用
- 示例:
常用命令组合示例
1. 连接老旧Linux系统(CentOS 6.x)
1
|
ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa [email protected]
|
2. 使用指定密钥连接非标准端口
1
|
ssh -o PubkeyAcceptedAlgorithms=+ssh-rsa -p 13505 -i E:\dajon\.ssh\id_rsa [email protected]
|
3. 连接OpenWrt系统并启动ash shell
1
|
ssh -p 3505 -o HostKeyAlgorithms=+ssh-rsa -o StrictHostKeyChecking=no -t [email protected] /bin/ash
|
4. 跳过验证并执行后台脚本
1
|
ssh -o StrictHostKeyChecking=no -p 3505 [email protected] "sh -x /tmp/show_me.sh &"
|
5. 传输文件到老系统
6. 使用原始SCP协议传输
主机密钥管理
删除已知主机记录
1
|
ssh-keygen.exe -R "[172.16.7.206]:12345" -f C:\Users\Administrator/.ssh/known_hosts
|
- 应用场景: 主机密钥变更后需要清除旧记录
- 参数说明:
-R
: 删除指定主机的所有密钥
-f
: 指定known_hosts文件路径
系统兼容性对照表
系统类型 |
推荐参数组合 |
备注 |
CentOS 6.x/7.x |
-o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa |
老旧系统必需 |
Debian 12/Ubuntu 22+ |
标准参数即可 |
现代系统支持完整 |
OpenWrt |
-o HostKeyAlgorithms=+ssh-rsa -t |
需要TTY分配 |
Busybox环境 |
-t + 指定shell路径 |
如/bin/ash |
安全建议
- 生产环境避免使用
StrictHostKeyChecking=no
- 定期更新SSH密钥,避免长期使用RSA算法
- 使用强密码或密钥认证替代密码认证
- 限制SSH访问,使用防火墙规则或fail2ban
- 启用SSH日志审计,监控异常连接
故障排除
常见错误及解决方案
-
no matching host key type found
- 解决: 添加
-o HostKeyAlgorithms=+ssh-rsa
-
no matching key exchange method found
- 解决: 添加
-o KexAlgorithms=+diffie-hellman-group1-sha1
-
Permission denied (publickey)
- 检查密钥权限:
chmod 600 ~/.ssh/id_rsa
- 添加
-o PubkeyAcceptedAlgorithms=+ssh-rsa
-
Connection refused
- 检查端口: 使用
-p
指定正确端口
- 检查服务:
systemctl status ssh
本指南基于日常运维经验整理,涵盖Windows终端连接各种Linux系统的常见场景。建议根据实际环境调整参数配置。