如果你的 SSH 服务器允许更改你的账户密码,请前往会话 > 更改密码请求那个。
事实上,WinSCP 可以更改我们使用的服务器上的 SSH/SFTP 密码(但我们无法管理它)。
我努力了:
ssh user@server
失败 ->“通道 0 上的 shell 请求失败”和ssh user@server passwd
也失败了 ->“通道 0 上的执行请求失败”
还有什么其他方法可以更改密码(从命令行)?
WinSCP 在 Windows 上运行。我喜欢在 Linux 上运行命令行命令。但如果有 Python 解决方案,那也不错。
至少我想知道合理猜测如果上述选项不起作用,WinSCP 将如何更改密码。
sftp> version
返回 “SFTP 协议版本 3”sftp > help
似乎没有返回任何有用的密码更改命令
答案1
如果您没有 shell 访问权限,也没有任何其他界面来更改密码,您将必须使用消息SSH2_MSG_USERAUTH_REQUEST
来更改密码(这就是 WinSCP 所做的)
常见的 Linux SSH 工具集 OpenSSH 无法通过这种方式请求更改密码。我不知道有任何其他 Linux 命令行工具可以这样做。
在 Python 中实现这一点绝对是可能的。不过在我看来,常见的 Python SSH 库 Paramiko 也不支持这一点。
但如果你稍微修改一下代码,它就可以做到。找到以下_parse_service_accept
代码auth_handler.py
:
m.add_boolean(False)
password = b(self.password)
m.add_string(password)
并将其更改为:
m.add_boolean(True) # Yes, change password
password = b(self.password)
m.add_string(password)
m.add_string(b("newpassword"))
(但我没有测试过)
或者您可以使用 Wine 在 Linux 上运行 WinSCP。WinSCP 可以使用(未记录的)开关在命令行上更改密码/newpassword
。
winscp.com sftp://user:[email protected] /newpassword=newpassword