我一直在寻找,但找不到解决我遇到的问题的方法。我正在运行Ubuntu 16.04 LTS
,并按照 Ubuntu 上的说明进行操作页2222
通过更新文件来将 SSH 端口更改为sshd_config
。
# What ports, IPs and protocols we listen for
Port 2222
但是,当我执行命令时sudo systemctl restart sshd.service
,只收到以下错误:
Job for ssh.service failed because the control process exited with error code. See "systemctl status ssh.service" and "journalctl -xe" for details.
然后我执行了命令systemctl status ssh.service
并得到了
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Wed 2016-09-07 23:24:04 EDT; 1min 28s ago
Process: 16813 ExecStart=/usr/sbin/sshd -D $SSHD_OPTS (code=exited, status=255)
Main PID: 16813 (code=exited, status=255)
Sep 07 23:24:04 sys-0 systemd[1]: Starting OpenBSD Secure Shell server...
Sep 07 23:24:04 sys-0 systemd[1]: ssh.service: Main process exited, code=exited, status=255/n/a
Sep 07 23:24:04 sys-0 systemd[1]: Failed to start OpenBSD Secure Shell server.
Sep 07 23:24:04 sys-0 systemd[1]: ssh.service: Unit entered failed state.
Sep 07 23:24:04 sys-0 systemd[1]: ssh.service: Failed with result 'exit-code'.
这个错误是什么意思?我该如何解决?
答案1
作为@techraf 说,很可能你在 中犯了一个简单的错误/etc/ssh/sshd_config
。尝试sshd 测试模式:
$ sudo sshd -t
/etc/ssh/sshd_config: line 1: Bad configuration option: sds
从手册页:
-t
测试模式。仅检查配置文件的有效性和密钥的完整性。这对于可靠地更新 sshd 很有用,因为配置选项可能会发生变化。-T
扩展测试模式. 检查配置文件的有效性,将有效配置输出到 stdout 然后退出。可选地,可以通过使用一个或多个指定连接参数来应用匹配规则-C
选项。
答案2
您是否在使用 的系统上运行SELinux
?这可能是拒绝端口绑定;请尝试添加新规则。
semanage port -a -t ssh_port_t -p tcp 2222
答案3
我也犯了同样的错误。经过一段时间的苦思冥想,我发现我/etc/passwd
通过运行自定义的 Linux 服务器设置 Bash 脚本破坏了条目,这个脚本以前运行良好,但这次“sed”命令中的正则表达式删除了所有现有条目 :D 从另一个正常运行的 Linux 服务器复制粘贴默认条目后,我终于可以重新启动 sshd 了。
/etc/passwd
因此,在应用任何正则表达式替换之前,请不要忘记备份原始文件:)
答案4
编辑sshd_config
sudo nano /etc/ssh/sshd_config
并注释掉这一行:
Subsystem sftp /usr/lib/openssh/sftp-server
我的意思是将其改为:
# Subsystem sftp /usr/lib/openssh/sftp-server