你好,我无法在 redhat 6.9 上启动 sshd。以下是日志
当我尝试重新启动服务时,收到以下错误日志。
/var/log/消息
Mar 5 06:49:31 c2t26451 init: sshd main process (19225) terminated with status 255
Mar 5 06:49:31 c2t26451 init: sshd main process ended, respawning
/var/log/安全
Mar 5 07:37:54 c2t26451 sshd[31840]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Mar 5 07:37:54 c2t26451 sshd[31840]: fatal: Cannot bind any address.
以下是服务状态和 sshd 进程
[ ~]$ sudo service sshd status
openssh-daemon is stopped
[ ~]$ ps -ef|grep ssh
root 22036 28601 0 05:26 ? 00:00:00 sshd: testuser [priv]
testuser 22042 22036 0 05:26 ? 00:00:00 sshd: testuser@pts/0
testuser 22166 22043 0 05:29 pts/0 00:00:00 grep ssh
root 28601 1 0 Mar05 ? 00:00:00 /usr/sbin/sshd -D
虽然有一个进程已经在运行,但我想知道如果我终止它,我是否会被永久锁定在服务器之外。此外,我不确定如果我重新启动服务器会有什么影响。
答案1
您没有将其视为服务的原因是,sshd 是作为常规进程而不是服务/守护进程运行的。来自man sshd
:
-D When this option is specified, sshd will not detach and does not become a daemon. This
allows easy monitoring of sshd.
您可以通过发出命令检查是否有任何其他网络服务正在使用同一端口netstat
:
netstat -lntup
or
netstat -lntup | grep ':22'
您可以做的是创建另一个具有不同名称和不同端口号的 sshd 配置文件。记得在 iptables 中打开该端口。使用指定的新配置启动另一个实例:
sudo sshd -D -f my_new_config
这将以相同的方式启动 sshd,作为一个进程。通过 ssh 连接到您的新端口号并终止另一个会话 - 确保您正在终止正确的会话!另外,保持第一个会话打开以防万一。
现在将您的默认 sshd 作为服务而不是守护进程启动,并使其随系统启动而启动。
service sshd start
chkconfig --add sshd
chkconfig --level 2345 sshd on
现在,根据您的进一步评论:似乎有些东西在被杀死时重新启动了 sshd。如果我理解正确的话,可能是它自己的配置文件或 sshd 本身(再次参考man sshd
):
sshd
rereads its configuration file when it receives a hangup signal, SIGHUP, by executing itself with the
name and options it was started with, e.g. /usr/sbin/sshd
向 OP 提出的问题:
您介意发布您的 sshd 配置文件吗?最好将所有敏感细节“审查”好?这是全新安装的操作系统还是您“继承”的服务器?
更新:
我进行了一个简单的测试,因为这个-D
选项让我思考:它不应该分离并在后台运行。
cp sshd_config test_sshd # copied config, changed port number
/usr/sbin/sshd -D -f test_sshd
ps -ef | grep sshd
root 1842 1718 0 12:03 pts/5 00:00:00 /usr/sbin/sshd -D -f test_sshd
如果我从另一个会话或Ctrl-c
在我运行的会话中终止该进程/usr/sbin/sshd -D -f test_sshd
,正常行为是该进程关闭并且不会重新启动。
kill 1769 # or Ctrl-c
ps aux | grep 'sshd -D'
root 1848 0.0 0.0 103324 880 pts/6 S+ 12:08 0:00 grep sshd -D
这表明您正在运行其他进程、脚本、看门狗,当 sshd 失败、被终止或以其他方式退出时,它会重新启动 sshd 作为常规进程。请以 root 用户身份查看您的cron
或条目,检查或 的运行进程。anacron
screen
tmux
crontab -l
cat /etc/anacrontab
ps -ef | grep -e 'screen' -e 'tmux'