禁止在pod中使用passwd命令

服务器上创建文件/etc/apparmor.d/deny-passwd
profile deny-passwd flags=(attach_disconnected) {
  # 默认允许文件读写和一般命令执行
  file,

  # 阻止执行 passwd
  deny /usr/bin/passwd x,
}
启用
sudo apparmor_parser -r /etc/apparmor.d/deny-passwd

查看是否生效

root@gpu03:/home/xb/k8s/yamls#  aa-status | grep deny-passwd
   deny-passwd
   /usr/bin/bash (176457) deny-passwd
   /usr/sbin/sshd (176530) deny-passwd
   /usr/bin/python3.12 (176531) deny-passwd

创建pod

apiVersion: apps/v1
kind: Deployment
metadata:
  name: gpua
  labels:
    app: gpu
spec:
  replicas: 1
  selector:
    matchLabels:
      app: gpu
  template:
    metadata:
      labels:
        app: gpu
    spec:
      containers:
      - name: gpu
        image: compute.aaa.tech:5000/pytorch:25.01-py3-sshd
        env:
        - name: ROOT_PASSWORD
          value: "123456abcd"
        - name: JUPYTER_ENABLE_LAB
          value: "yes"
        resources:
          limits:
            nvidia.com/gpu: 1
        securityContext:
          appArmorProfile:
            type: Localhost
            localhostProfile: deny-passwd

容器内验证是否生效

root@gpua-7c8598785b-b4n6m:/workspace# passwd root
bash: /usr/bin/passwd: Permission denied

核心配置

appArmorProfile:
  type: Localhost
  localhostProfile: deny-passwd

<think>好的,用户现在遇到了SSH连接RunPod时输入root密码后出现“permissiondenied”的问题。我需要帮他解决这个问题。首先,我得回顾之前的对话,用户之前问过关于SSH连不上的问题,我给出了检查基础配置、网络诊断、服务状态排查等步骤。现在用户的问题是输入root密码后权限被拒绝,这可能和之前的连接问题有关联,但具体原因可能不同。首先,用户提到输入root密码后出现permission denied,这说明SSH服务可能已经接受连接,但认证失败。可能的原因包括:密码错误、SSH配置禁止root登录、用户账户被锁定、或者权限设置问题。需要逐一排查这些可能性。 参考用户提供的引用内容,其中提到sudo命令的密码缓存机制和chgrp命令,但这些似乎和当前问题关联不大。不过用户可能有误解,需要确保回答不偏离实际需求。接下来,我需要按照步骤来解答:1.**确认账户有效性**:检查root账户是否被禁用。在RunPod中,有些实例可能默认禁用root登录,需要通过其他用户或WebTerminal进入系统修改配置。比如检查/etc/ssh/sshd_config中的PermitRootLogin是否设置为yes,并重启SSH服务。 2. **密码正确性验证**:用户可能输入了错误的密码。建议通过Web Terminal直接修改root密码,或者检查密码是否正确,注意大小写和特殊字符。 3. **密钥登录冲突**:如果实例配置为仅允许密钥认证,即使输入正确密码也会被拒绝。需要检查sshd_config中的PasswordAuthentication是否为yes,否则需要添加公钥到authorized_keys。 4. **文件权限检查**:SSH对文件权限敏感,如~/.ssh目录权限应为700,authorized_keys为600。如果权限不对,会导致拒绝连接。 5. **SELinux/AppArmor干扰**:有时安全模块会阻止登录,需要暂时禁用或调整策略。6.**日志分析**:查看/var/log/auth.log或journalctl -u sshd,寻找具体的错误信息,比如认证失败的原因。 另外,用户可能没有正确配置SSH服务,或者在实例创建时选择了错误的认证方式。比如RunPod可能默认使用密钥对,而用户尝试用密码登录,导致失败。需要确认实例的安全组设置是否允许密码登录,或者是否强制使用密钥。在回答中需要引导用户逐步检查这些方面,并给出具体的命令示例,比如如何修改sshd_config,如何重启服务,如何检查日志等。同时,引用之前的建议,比如检查网络连接和端口,但重点放在认证和权限问题上。 最后,生成相关问题,帮助用户深入解决可能遇到的其他问题,比如如何启用Web Terminal,如何配置密钥登录等。</think>### RunPod SSH密码登录权限拒绝解决方案 #### 1. 确认账户有效性 - **检查root登录权限**: ```bash grep "PermitRootLogin" /etc/ssh/sshd_config ``` 如果显示`PermitRootLogin no`,需通过Web Terminal修改为`yes`后执行: ```bash systemctl restart sshd # 修改后必须重启服务[^1] ``` #### 2. 密码正确性验证 - **强制修改密码**(通过Web Terminal): ```bash passwd root # 需输入两次新密码 ``` 注意密码复杂度要求:至少8字符,包含大小写字母和数字的组合 #### 3. 密钥登录冲突检查 - **验证认证模式**: ```bash grep "PasswordAuthentication" /etc/ssh/sshd_config ``` 若显示`PasswordAuthentication no`,说明强制使用密钥认证,此时需: ```bash ssh-copy-id -i ~/.ssh/id_rsa.pub root@pod_ip # 上传公钥 ``` #### 4. 文件权限深度检查 - **关键目录权限验证**: ```bash ls -ld /root /root/.ssh /root/.ssh/authorized_keys ``` 正确权限应为: ``` drwx------ 5 root root 4096 Jul 10 12:00 /root drwx------ 2 root root 4096 Jul 10 12:05 /root/.ssh -rw------- 1 root root 742 Jul 10 12:05 authorized_keys ``` #### 5. 安全模块排查 - **临时禁用SELinux**: ```bash setenforce 0 # 立即生效但重启后恢复 getenforce # 验证状态应为Permissive ``` #### 6. 日志分析技巧 - **实时监控认证日志**: ```bash tail -f /var/log/auth.log | grep "sshd.*root" ``` 典型错误模式: - `Failed password for root`:密码错误 - `User root not allowed`:账户被禁用 - `Authentication refused`:权限配置错误 #### 7. 加密算法兼容性 - **强制指定加密协议**(适用于旧版客户端): ```bash ssh -o KexAlgorithms=diffie-hellman-group14-sha256 root@pod_ip ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值