最近在新分配的VM发布应用,熟悉的启动后台启动命令:nohup java -jar xxx.jar &,查看日志:tail -f nohup.out,启动一切正常,浏览器也可以正常访问到端口。关闭xshell,应用无法访问,查看进程ps -ef|grep java,没有进程。
开始以为是客户端问题,换MobaXterm又执行一遍操作,断开终端,nohup进程消失。真是百思不得其解,百度说没有安全退出exit、启动命令加disown之类的都不行。但是同样的jar包,放到其他VM,同样的执行命令,一切正常。经过不懈努力,问题逐渐定位到了openssh上,新VM的openssh版本是8.01,度娘一下,说openssh8+以上的版本果然存在这个漏洞。
查看ssh版本: ssh -V
penSSH_8.1p1, OpenSSL 1.0.2k-fips 26 Jan 2017
解决办法
1.在/usr/lib/systemd/system/sshd@.service配置的【Service】下追加,KillMode=process
1 [Unit]
2 Description=OpenSSH per-connection server daemon
3 Documentation=man:sshd(8) man:sshd_config(5)
4 Wants=sshd-keygen.service
5 After=sshd-keygen.service
6
7 [Service]
8 EnvironmentFile=-/etc/sysconfig/sshd
9 ExecStart=-/usr/sbin/sshd -i $OPTIONS
10 StandardInput=socket
11 KillMode=process #追加的设置
2.重启sshd服务
systemctl restart sshd.service
正常重启sshd服务就可以正常后台启动程序了,如果出现重启错误,先执行重启命令:
systemctl restart sshd
再执行命令:
systemctl restart sshd.service