Linux下去除windows密码

本文介绍如何使用Linux工具chntpw轻松去除Windows密码,包括安装工具、挂载分区、运行命令等步骤,最终成功清除忘记的密码并顺利进入Windows系统。

转自:http://linux.cn/thread/10723/1/1/


今天遇到一件囧事,长时间不进Windows环境结果把自己设置的密码给忘记了,于是便发了一条微博。热心朋友一大堆,给我推荐各种各样的方法,自己也到网上搜了一搜,原来在Linux下去除Windows的密码是那么简单。方法步骤如下:

一、安装工具chntpw

这个工具应该在各大发行版的官源里都存在(Linux对Windows的安全环境考虑真是没得说。==!)。直接用你的发行版里最常用的安装方式安装即可。

比如Archlinux– sudo pacman -S chntpw

二、使用工具

挂载windows系统分区盘,进入到 windows/system32/config中,就地打开终端,运行如下命令:

sudo chntpw SAM

会得到如下提示:


    chntpw version 0.99.6 110511 , (c) Petter N Hagen
    Hive <SAM> name (from header): <SystemRootSystem32ConfigSAM>
    ROOT KEY at offset: 0×001020 * Subkey indexing type is: 666c <lf>
    File size 262144 [40000] bytes, containing 5 pages (+ 1 headerpage)
    Used for data: 233/17736 blocks/bytes, unused: 16/2584 blocks/bytes.
    * SAM policy limits:
    Failed logins before lockout is: 0
    Minimum password length : 0
    Password history count : 0
    | RID -|———- Username ————| Admin? |- Lock? –|
    | 01f4 | Administrator | ADMIN | *BLANK* |
    | 01f5 | Guest | | dis/lock |

    ———————> SYSKEY CHECK <———————–
    SYSTEM SecureBoot : -1 -> Not Set (not installed, good!)
    SAM AccountF : 0 -> off
    SECURITY PolSecretEncryptionKey: -1 -> Not Set (OK if this is NT4)
    Syskey not installed!

    RID : 0500 [01f4]
    Username: Administrator
    fullname:
    comment : ���:(�)��n7
    homedir :

    User is member of 1 groups:
    00000220 = Administrators (which has 1 members)

    Account bits: 0×0210 =
    [ ] Disabled | [ ] Homedir req. | [ ] Passwd not req. |
    [ ] Temp. duplicate | [X] Normal account | [ ] NMS account |
    [ ] Domain trust ac | [ ] Wks trust act. | [ ] Srv trust act |
    [X] Pwd don’t expir | [ ] Auto lockout | [ ] (unknown 0×08) |
    [ ] (unknown 0×10) | [ ] (unknown 0×20) | [ ] (unknown 0×40) |

    Failed login count: 0, while max tries is: 0
    Total login count: 81
    ** No NT MD4 hash found. This user probably has a BLANK password!
    ** No LANMAN hash found either. Sorry, cannot change. Try login with no password!

    - – - – User Edit Menu:
    1 – Clear (blank) user password
    2 – Edit (set new) user password (careful with this on XP or Vista)
    3 – Promote user (make user an administrator)
    (4 – Unlock and enable user account) [seems unlocked already]
    q – Quit editing user, back to user select
    Select: [q] >

很显然,选1清除密码;选2重设密码;选3不知不觉提升用户权限,哈哈;选4启用或者关闭某个用户。我果然选1,重启进入Windows一路无阻!

<think>嗯,用户想知道如何在Linux虚拟机上禁用密码认证并设置SSH免密登录。首先,我需要回忆一下相关的SSH配置步骤。记得SSH的配置文件通常是/etc/ssh/sshd_config,所以需要修改这个文件来禁用密码验证。 首先,生成SSH密钥对。用户需要在本机上使用ssh-keygen命令生成公钥和私钥,默认保存在~/.ssh目录下。这一步应该没问题,但可能需要确认用户是否有权限写入该目录。 然后,把公钥复制到目标虚拟机的authorized_keys文件中。可以用ssh-copy-id命令,但如果目标系统是Windows可能有问题,不过用户问的是Linux虚拟机,所以应该可以顺利使用这个命令。如果不行的话,可能需要手动复制,比如通过scp或者手动创建.ssh目录和authorized_keys文件,并设置正确的权限,比如700和600,否则SSH可能不会接受。 接下来,修改SSH服务端的配置。需要找到PasswordAuthentication这个选项,将其设置为no,同时可能还要确保PubkeyAuthentication是yes。另外,可能需要检查其他相关设置,比如ChallengeResponseAuthentication是否也设为no,以彻底禁用密码登录。修改配置文件后,记得重启sshd服务,比如用systemctl restart sshd。 不过,用户可能会在操作过程中遇到问题,比如权限设置不对导致公钥不被接受,或者配置修改错误导致SSH无法连接。这时候需要提醒用户测试连接时保持一个现有会话开启,避免被锁在外面。比如,在重启sshd之前,先开另一个终端确认免密登录已经生效,再关闭密码登录。 另外,引用中提到ssh-copy-id的使用,如果自动执行失败,需要手动复制公钥到目标机的~/.ssh/authorized_keys中,并确保目录和文件的权限正确。比如,.ssh目录权限应为700,authorized_keys是600。这点很重要,否则SSH会拒绝使用密钥。 还有,用户可能不知道如何正确编辑sshd_config文件,可能需要使用sudo权限和正确的文本编辑器,比如vim或nano。同时,修改后要检查语法是否正确,可以用sshd -t来测试配置文件是否有错误,避免服务无法启动。 最后,关于禁用密码登录的安全性,虽然提高了安全性,但如果密钥丢失或配置错误,可能会导致无法登录,所以建议用户备份密钥并妥善保管私钥。同时,确保只有必要用户能够通过SSH登录,比如设置AllowUsers选项。 总结步骤应该是:生成密钥对,复制公钥到目标机,修改sshd_config禁用密码认证,重启服务,测试连接。同时注意权限和备份。</think>### 如何在Linux虚拟机中禁用密码认证并设置SSH免密登录 #### **步骤1:生成SSH密钥对** 在本地客户端生成密钥对(默认保存在 `~/.ssh/` 目录): ```bash ssh-keygen -t rsa -b 4096 ``` - 按提示选择保存路径(默认直接回车) - 输入密钥密码(可选,直接回车跳过) 生成的密钥文件: - 私钥:`$ ~/.ssh/id_rsa`(需严格保密) - 公钥:`$ ~/.ssh/id_rsa.pub`(需传递给目标服务器) #### **步骤2:复制公钥到目标虚拟机** 使用 `ssh-copy-id` 自动传输公钥: ```bash ssh-copy-id -i ~/.ssh/id_rsa.pub root@目标虚拟机IP ``` 若命令失败,需手动操作: 1. 将公钥内容复制到目标虚拟机的 `~/.ssh/authorized_keys` 文件 2. 确保目标目录权限正确: ```bash chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys ``` #### **步骤3:禁用SSH密码认证** 修改目标虚拟机的SSH服务端配置文件: ```bash vi /etc/ssh/sshd_config ``` 调整以下参数: ```bash PasswordAuthentication no # 禁用密码验证 PubkeyAuthentication yes # 启用密钥验证 ChallengeResponseAuthentication no # 关闭其他交互验证 ``` 保存后重启SSH服务: ```bash systemctl restart sshd ``` #### **步骤4:验证免密登录** ```bash ssh root@目标虚拟机IP ``` 若直接登录成功,说明配置生效;若失败,检查密钥权限或配置文件语法。 --- ### **关键注意事项** 1. **权限要求** - `authorized_keys` 文件权限必须为 `600` - `.ssh` 目录权限必须为 `700`,否则SSH会拒绝密钥认证[^4] 2. **备份会话** 修改配置前,建议保持一个已登录的SSH会话,防止配置错误导致失联。 3. **兼容性** Windows客户端需使用支持 `ssh-copy-id` 的工具(如Git Bash),或手动复制公钥[^2][^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值