不知道到底发生了什么。我将 root 密码更改为包含奇怪字符的长密码,并反复检查是否可以使用该密码登录,并且从那时起就一直可以登录。到目前为止。
我认为错误字符是 '。我如何在 Putty 中输入它?当我在 Putty 中粘贴密码时,该字符和其他一些字符被删除/移动。我在窗口>翻译下设置了 UTF-8。
更新: locale
返回以下内容。
LANG=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
我(错误地)认为它使用的是 UTF-8。
有没有办法让 su 从文件中读取密码?
更新 2:我使用 Notepad++ 创建了两个文件;ansi.txt
和utf8.txt
。均包含字符串abc’def
cat ansi.txt
打印abcdef
cat utf8.txt
打印abcâdef
答案1
如果“特殊”字符实际上是重音字符(如 ' 或 ```),我可以想象您当前的输入法会将此字符(例如,后面跟着元音)转换为重音字符。例如,在德语键盘上输入 ' 和 e 在许多情况下会变成 é,类似地,输入 ```` 和 u 会变成 ù。您可以尝试在“特殊”字符后直接输入一个空格来阻止这种转换。不能保证,只是猜测。(我希望这个答案会出现在预览中,就像我现在看到的那样。;-))
答案2
尝试
#!/bin/sh
su - << _EOF_
password goes here
_EOF_
将其放入文件 tmpPassFix 然后运行
chmod +x tmpPassFix
./tmpPassFix
未经测试,可能有效也可能无效。这是假设您可以将密码放入上面的“tmpPassFix”文件中。我不太了解编码,但如果您可以在 Windows 中获取它,您可以执行上述操作,然后使用 winscp 将其覆盖,前提是脚本有效。
答案3
Rackspace 实际上有一个重置密码按钮。转到托管>云服务器> [您的服务器] 并单击救命按钮。
请注意,它会重新启动服务器,因此请打开控制台并监视系统是否再次正常上线。