电脑突然坏了,把备用老机重新拿出来使用,本来是直接上debian的,不过要上一下微信和 QQ ,查一下居然都能在 xp 上运行,那就弄个 xp 系统吧,没办法,老机的 cpu 连虚拟化都不支持,直接干吧。
啥软件都弄好后,直接上 vnc 了,但是,有时候 xp 会卡死,这时啥都做不了,就算接上了键鼠,还是得等,一动不动。这时候,我就想到了,不如加一个远程命令行好了。然后就选中了 openssh ,它还有一个 sftp 功能,打算也把它挂上。老主板即使是后端 usb 也只有 usb 1.0 ,速度慢得可怜。网卡却是一百兆的,用网络传输快上不少。
安装好 cygwin 的 openssh 后,发现启动不了,在命令行使用 net start opensshd,显示 OpenSSH Server 服务无法启动。 NET HELPMSG 3534 获得更多帮助。
在计算机管理-》服务里面启动,则显示 本地计算机上的 OpenSSH Server 服务启动后又停止了。
来来回回好几次,心情郁闷。我想起这个 cygwin 是个超级精简的 linux 环境,然后进去 OpenSSH 的目录,查看了一下目录,发现有个 var 的目录,多年来使用 linux 的直觉告诉我,里面好像有一个 log 目录。果不其然,目录里面有 OpenSSHd.log ,打开一看,里面写着 /var/empty must be owned by root and not group or world-writable.
现在方向有了,是这个 empty 目录只能 root 拥有,不能有组和不能写入。使用chown root /var/empty -R。却告诉我,root 这个用户不存在。根据经验,打开了 /etc 目录,查看下面的 passwd 目录,是真的没有 root 的字样,那就mkpasswd -U root ,新建一个 root 用户就是。然后 chown root /var/empty -R ,chmod 700 /var/empty -R这次没有报错,我想,这次肯定行了吧。
然后输入 net start opensshd ,却还是无法启动。我直接郁闷了,这咋还不行呢。
然后我回去查看 passwd 目录, root 用户是新建出来了,但是怎么还会出错呢,那可能表明的是,在 cygwin 这个系统里面 root 并不是指 linux 环境里面的 root 。
然后没办法了,干脆对着这个用户表撞吧, root 作为必要的用户,肯定有一个在里面的。
于是,按自己的理解, root 作为管理员,改为 Administrator 拥有,不行;
改为当前用户,不行;
改为 LOCAL SERVICE ,不行;
NETWORK SERVICE 也不行。
当前就剩下 SYSTEM、Guest、sshd 这几个怎么都不见得会是 root 吧……
输入 SYSTEM 后,居然显示服务启动成功。哈哈,不枉我调试了那么久,还真行了。问题完美解决,接下来开个 sftp 服务器就 ok 。
总结:
在winxp 下,cygwin 这个环境的openssh /var/empty must be owned by root and not group or world-writable. 这个错误,需要自己把 /var/empty 调成 root 拥有,700的权限,不属于任何组。
在这个环境当中, root 用户映射成了 SYSTEM 用户,把以上都弄好后,启用就没有问题了。
若把本地用户当作 ssh 的用户,需要使用mkpasswd -l -u 进行用户的添加。在客户端直接输入帐户密码就可以使用。这样一来,就算画面卡死了, ssh 把卡死的程序关掉了也行,直接重启也行,可以更加灵活地使用。