SSH/SCP 常用参数配置指南

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相关算法,此参数强制启用
  • 示例:
    1
    
    ssh -o HostKeyAlgorithms=+ssh-rsa [email protected]
    

-o PubkeyAcceptedAlgorithms=+ssh-rsa

  • 含义: 启用SSH-RSA公钥认证算法支持
  • 应用场景:
    • 与老系统进行密钥认证时必需
    • OpenSSH 8.2+ 版本默认禁用,需要显式启用
    • 通常与HostKeyAlgorithms参数配合使用
  • 示例:
    1
    
    ssh -o PubkeyAcceptedAlgorithms=+ssh-rsa -i ~/.ssh/id_rsa [email protected]
    

2. 安全相关参数

-o StrictHostKeyChecking=no

  • 含义: 跳过主机密钥验证
  • 应用场景:
    • 首次连接新主机
    • 临时连接或测试环境
    • 主机密钥发生变化时的紧急连接
  • 安全警告: ⚠️ 生产环境慎用,存在中间人攻击风险
  • 示例:
    1
    
    ssh -o StrictHostKeyChecking=no [email protected]
    

3. 认证相关参数

-i <密钥文件路径>

  • 含义: 指定私钥文件路径
  • 应用场景:
    • 使用非默认位置的密钥文件
    • 为不同服务器使用不同密钥
    • Windows环境下的密钥文件路径指定
  • 示例:
    1
    
    ssh -i E:\dajon\.ssh\id_rsa [email protected]
    

4. 连接相关参数

-p <端口号>

  • 含义: 指定SSH连接端口
  • 应用场景:
    • 非标准端口的SSH服务
    • 安全加固后的系统
    • 端口转发或代理环境
  • 示例:
    1
    
    ssh -p 13505 [email protected]
    

-t

  • 含义: 强制分配伪终端(TTY)
  • 应用场景:
    • 需要交互式shell的场景
    • 连接到busybox或ash shell
    • 执行需要终端环境的命令
  • 示例:
    1
    
    ssh -p 3505 -t [email protected] /bin/ash
    

SCP 常用参数详解

1. 端口参数

-P <端口号>

  • 含义: 指定SCP传输端口(注意大写P)
  • 应用场景: 与SSH的-p参数作用相同,但SCP使用大写P
  • 示例:
    1
    
    scp -P 13505 -r [email protected]:/uscale ./
    

2. 传输相关参数

-r

  • 含义: 递归复制目录及其内容
  • 应用场景: 复制整个目录结构
  • 示例:
    1
    
    scp -P 13505 -r [email protected]:/uscale ./
    

-O

  • 含义: 使用原始SCP协议而非SFTP协议
  • 应用场景:
    • 老旧系统不支持SFTP
    • 网络环境对SFTP支持有问题
    • OpenSSH 8.0+ 版本建议使用
  • 示例:
    1
    
    scp -O -P 3505 ./linux-serial-test [email protected]:/tmp/
    

常用命令组合示例

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. 传输文件到老系统

1
scp -o HostKeyAlgorithms=+ssh-rsa ./firmware.bin [email protected]:/root/tftpboot/

6. 使用原始SCP协议传输

1
scp -O -P 3505 ./binary-file [email protected]:/tmp/

主机密钥管理

删除已知主机记录

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

安全建议

  1. 生产环境避免使用StrictHostKeyChecking=no
  2. 定期更新SSH密钥,避免长期使用RSA算法
  3. 使用强密码或密钥认证替代密码认证
  4. 限制SSH访问,使用防火墙规则或fail2ban
  5. 启用SSH日志审计,监控异常连接

故障排除

常见错误及解决方案

  1. no matching host key type found

    • 解决: 添加-o HostKeyAlgorithms=+ssh-rsa
  2. no matching key exchange method found

    • 解决: 添加-o KexAlgorithms=+diffie-hellman-group1-sha1
  3. Permission denied (publickey)

    • 检查密钥权限: chmod 600 ~/.ssh/id_rsa
    • 添加-o PubkeyAcceptedAlgorithms=+ssh-rsa
  4. Connection refused

    • 检查端口: 使用-p指定正确端口
    • 检查服务: systemctl status ssh

本指南基于日常运维经验整理,涵盖Windows终端连接各种Linux系统的常见场景。建议根据实际环境调整参数配置。

Licensed under CC BY-NC-SA 4.0
使用 Hugo 构建
主题 StackJimmy 设计