代码改变世界

详细介绍:SSH 远程登录(Metasploitable 靶机实战)复习总结

2025-12-10 17:05  tlnshuju  阅读(26)  评论(0)    收藏  举报

一、学习背景与环境

1. 核心目标

掌握 SSH 协议远程登录的完整流程,解决老旧 SSH 服务的兼容性问题,熟悉渗透测试靶机的 SSH 登录操作,为后续权限提升、漏洞利用打下基础。

2. 环境信息

设备系统 / 服务版本关键信息
本地攻击机Kali Linux(最新版)自带 OpenSSH 客户端(默认禁用老旧算法)
远程靶机Metasploitable(Ubuntu 内核 2.6.24)SSH 服务版本:OpenSSH 4.7p1(仅支持 ssh-rsa/ssh-dss 算法)
靶机 SSH 配置端口 22 开放,默认账户 msfadmin(密码 msfadmin)允许密码登录,支持 SSH 协议 v2

二、核心知识点回顾

1. SSH 协议基础

  • 定义:SSH(Secure Shell)是加密远程登录协议,替代明文传输的 Telnet,默认使用 22 号端口。
  • 加密机制:通过非对称加密(公钥 + 私钥)验证主机身份,对称加密保护会话数据,确保传输安全。
  • 版本与算法:现代 SSH 客户端默认使用安全算法(如 ed25519),禁用 ssh-rsa/ssh-dss 等老旧算法(存在安全漏洞);老旧服务(如 OpenSSH 4.7p1)仅支持老旧算法,需手动兼容。

2. 靶机 SSH 服务探测(Nmap 扫描)

(1)扫描目的

确认靶机 22 端口状态、SSH 服务版本及是否为标准服务,为登录做准备。

(2)扫描命令

bash

运行

nmap -sV -p 22 192.168.1.5
  • -sV:探测服务版本信息。
  • -p 22:指定扫描 SSH 默认端口 22。
(3)扫描结果关键信息
  • 端口状态:open(SSH 服务已启动且端口开放)。
  • 服务版本:OpenSSH 4.7p1 Debian 8ubuntu1(老旧版本,仅支持 ssh-rsa/ssh-dss 算法)。
  • 靶机系统:Linux(Metasploitable 靶机)。

3. 登录核心问题与解决(密钥算法不兼容)

(1)问题现象

直接执行 ssh msfadmin@192.168.1.5 报错:

plaintext

Unable to negotiate with 192.168.1.5 port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss
(2)问题原因
  • 本地 Kali 最新版 OpenSSH 客户端默认禁用 ssh-rsa/ssh-dss 等不安全算法。
  • 靶机 OpenSSH 4.7p1 仅支持上述老旧算法,导致密钥协商失败。
(3)两种解决方法(重点复习)
方法 1:临时登录(单次有效)

通过命令行参数临时允许老旧算法,适合快速测试:

bash

运行

ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa msfadmin@192.168.1.5
  • 参数解释:
    • -o HostKeyAlgorithms=+ssh-rsa:允许客户端接受靶机的 ssh-rsa 主机密钥(解决 “无匹配主机密钥类型” 问题)。
    • -o PubkeyAcceptedAlgorithms=+ssh-rsa:允许客户端使用 ssh-rsa 算法进行身份验证(兼容老旧服务)。
  • 后续步骤:
    1. 首次连接提示确认主机指纹,输入 yes 回车(信任靶机,信息存入 ~/.ssh/known_hosts)。
    2. 输入靶机 msfadmin 用户密码(默认 msfadmin),回车登录。
方法 2:永久配置(长期使用)

在本地 Kali 的 SSH 客户端配置文件中添加规则,无需每次输入参数:

  1. 编辑配置文件(不存在则自动创建):

    bash

    运行

    nano ~/.ssh/config
  2. 添加靶机专属配置(仅对 192.168.1.5 生效):

    ssh-config

    Host 192.168.1.5  # 靶机 IP(可自定义名称,如 Host metasploitable)
      HostName 192.168.1.5  # 靶机实际 IP
      User msfadmin  # 默认登录用户名(后续可简化命令)
      HostKeyAlgorithms +ssh-rsa  # 允许 ssh-rsa 主机密钥
      PubkeyAcceptedAlgorithms +ssh-rsa  # 允许 ssh-rsa 身份验证算法
  3. 保存退出:Ctrl+O → 回车 → Ctrl+X
  4. 简化登录命令:

    bash

    运行

    ssh 192.168.1.5  # 自动加载配置,无需输用户名和算法参数

4. 登录后实战操作(靶机环境)

(1)系统信息探测(了解靶机环境)

bash

运行

# 查看系统版本
cat /etc/issue
uname -a  # 查看内核版本(2.6.24-16-server)
# 查看网络配置
ifconfig  # 老旧系统默认支持(ip addr 可能不兼容)
# 查看用户列表(过滤可登录用户)
cat /etc/passwd | grep -v nologin
# 查看开放端口与进程(需 root 权限)
netstat -tulnp
(2)权限操作(切换 root 用户)

Metasploitable 靶机默认支持 root 用户切换:

bash

运行

su root  # 切换到最高权限用户
# 输入 root 密码(默认 `root` 或 `msfadmin`)
# 成功后提示符变为 root@metasploitable:~#
(3)SSH 服务配置分析(安全审计)

查看靶机 SSH 配置文件,对比现代安全配置:

bash

运行

cat /etc/ssh/sshd_config  # 需 root 权限

重点关注参数:

  • PermitRootLogin yes:允许 root 直接登录(不安全,现代系统建议设为 no)。
  • PasswordAuthentication yes:允许密码登录(可配合密钥登录提升安全性)。
  • Protocol 2:使用 SSH v2 协议(v1 存在漏洞,已禁用)。
(4)SSH 文件传输(scp 命令)

从本地 Kali 与靶机互传文件(需兼容老旧算法):

bash

运行

# 本地 → 靶机(Kali 终端执行)
scp -o HostKeyAlgorithms=+ssh-rsa /本地文件路径 msfadmin@192.168.1.5:/tmp/
# 靶机 → 本地(Kali 终端执行)
scp -o HostKeyAlgorithms=+ssh-rsa msfadmin@192.168.1.5:/tmp/靶机文件 /本地保存路径

5. 退出登录

bash

运行

# 退出当前用户(msfadmin 或 root)
exit
# 若已切换 root,需先 exit 退回 msfadmin,再 exit 退出 SSH 会话

三、常见问题与排查(复习重点)

错误提示原因分析解决方法
no matching host key type found本地客户端禁用老旧算法,靶机仅支持 ssh-rsa/ssh-dss方法 1:命令加算法参数;方法 2:配置文件永久允许
Permission denied (publickey,password)密码错误;靶机禁用该用户登录;算法不兼容确认密码(msfadmin/msfadmin);检查算法配置;确认靶机允许密码登录
Host key verification failed靶机密钥变化(如重装系统),本地缓存冲突删除本地缓存:sed -i '/192.168.1.5/d' ~/.ssh/known_hosts
Connection refused靶机 SSH 服务未启动;端口被防火墙拦截靶机本地执行 sudo systemctl start ssh;开放 22 端口

四、安全注意事项与扩展方向

1. 安全提醒

  • 本次练习基于 测试靶机,生产环境中需禁用 ssh-rsa/ssh-dss 等老旧算法,升级 OpenSSH 版本。
  • 生产环境建议启用 SSH 密钥登录(禁用密码登录),修改默认端口 22,禁止 root 直接登录。

2. 扩展学习方向

  • 漏洞利用:Metasploitable 靶机存在大量已知漏洞(如 Samba、FTP 匿名登录),可结合 SSH 登录后的信息,用 Metasploit 工具练习渗透测试。
  • SSH 安全加固:对比靶机与现代系统的 SSH 配置,总结加固措施(如密钥登录、端口修改、防火墙规则)。
  • 自动化登录:配置 SSH 密钥登录(生成密钥对,上传公钥到靶机 ~/.ssh/authorized_keys),实现无密码登录。

五、核心命令速查(复习必备)

功能命令
Nmap 扫描 SSH 服务nmap -sV -p 22 目标IP
临时 SSH 登录(兼容算法)ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa 用户名@目标IP
永久配置 SSH 登录编辑 ~/.ssh/config 并添加靶机配置
切换 root 用户su root
查看 SSH 配置文件cat /etc/ssh/sshd_config
SCP 传输文件(本地→靶机)scp -o HostKeyAlgorithms=+ssh-rsa 本地文件 用户名@目标IP:/路径
退出登录exit