SSH服务详解

SSH服务详解ssh 服务的学习框架图为 目录 一 什么是 ssh 服务 1 ssh 理解是一个协议 用来远程控制服务器的 2 在默认状态下 SSH 服务主要提供两个服务功能 3 使用什么软件实现 ssh 远程登录 openssh 3 1 OpenSSH 是什么 3 2

大家好,我是讯享网,很高兴认识大家。

ssh服务的学习框架图为:

 


讯享网

目录

一、什么是ssh服务?

1、ssh理解是一个协议,用来远程控制服务器的。

2、在默认状态下,SSH服务主要提供两个服务功能

3、使用什么软件实现ssh——远程登录( openssh)

3.1、OpenSSH是什么

3.2、sshd中d的含义

二、ssh搭建+配置+排错+命令

1、ssh的命令的使用

1.1、sftp是什么

1.2、scp是什么

2、ssh服务的文件配置

2.1、查看、修改ssh服务中的配置文件(配置文件详解)

3、查看sshd服务是否启动

3.1、 查看进程

3.2 看端口(需要知道端口号)

3.3  直接访问

3.4 看日志

4、故障排查

4.1、selinux是什么

4.2、关闭防火墙

三、ssh服务器加固

四、ssh服务远程登录流程


一、什么是ssh服务?

1、ssh是secure shell protocol的简写,是安全的sshll。由 IETF 网络工作小组(Network Working Group )制定。

2、解决了什么问题:在进行数据传输之前,ssh先对联机数据包通过加密技术进行加密处理,加密之后在进行数据传输,确保了传递过程中的数据安全。

1、ssh理解是一个协议,用来远程控制服务器的。

      使用在linux/unix系统里,远程控制服务器。

      remote login program --远程登录程序

      对数据进行加密传输的服务,主要用在远程登录。

      ssh协议是应用层协议,支持的是ssh协议。

      分层:应用层、传输层、网络层、数据链路层、物理层。

      在计算机网络中属于应用层。

因为传统的网络服务程序。如ftp、pop和Telnet在本质上是不安全的,因为它们在网络上用明文传送口令和数据,有心之人会很容易的截取到这些口令和数据。同时,这些服务的安全验证方式是有一定的弱点的,就是很容易受到“中间人”的攻击。所谓的“中间人”的攻击方式,就是"中间人"冒充真正的服务器啦接收你要传给服务器的数据,然后再冒充你把数据传送给真正的服务器。服务器和你之间的数据传送就会被“中间人”“动手脚”修改了一下信息,这样就会出现很严重的问题。

而SSH是专程为远程登录会话和其他网络服务提供的安全性协议。利用SSH协议可以很有效的防止远程登录管理过程中的信息泄露问题,在当前的生产环境运维工作中,绝大多数企业普遍采用SSH协议服务来代替传统的不安全的远程联机服务软件。

2、在默认状态下,SSH服务主要提供两个服务功能

      n 一个是提供类似于Telnet远程联机服务器的服务,即上面提到的ssh服务。

      n 一个是类似于FTP服务的sftp-server,借助SSH协议来传输数据的,提供更加安全的SFTP服务(vsftp、proftp)。

ssh服务主要是在HP-UX、LINUX 、AIX、UNIX、LRIX、SCO、Mac OS X等系统上都有,但是Windows上没有。

ssh服务连接使用的是22端口,基于tcp协议。

3、使用什么软件实现ssh——远程登录( openssh)

ssh是允许root用户来登录的,Linux上是允许的(如果想要不允许的话:可以修改文件配置

vim /etc/ssh/sshd_config);而在Ubuntu上面是不允许的,但是也可以进行设置)

3.1、OpenSSH是什么

openssh是使用ssh协议进行远程登录的首要连接工具。它对所有通道进行加密,以消除窃听、连接劫持和其他攻击的。此外,OpenSSH是提供了大量的安全隧道功能,几种身份验证方法和复杂的配置选项。是开源免费的,官方学习网站为:http://www.openssh.com/

centos7/8/6安装好系统,是默认安装openssh的,在redhat里也是默认安装的。Ubuntu里有server版本,没有安装的。

可以通过查看进程查看sshd服务和openssh是否已经启动:

root@nginx-kafka01 ~]# ps -aux|grep sshd root 6633 0.0 0.4  4300 ? Ss 09:25 0:00 /usr/sbin/sshd -D root 7850 0.0 0.5  5908 ? Ss 09:25 0:00 sshd: root@pts/0 root 7906 0.0 0.0  984 pts/0 R+ 09:43 0:00 grep --color=auto sshd [root@nginx-kafka01 ~]# netstat -anpult|grep sshd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 6633/sshd tcp 0 36 192.168.2.152:22 192.168.2.118:50743 ESTABLISHED 7850/sshd: root@pts [root@nginx-kafka01 system]# rpm -q openssh openssh-7.4p1-16.el7.x86_64 [root@nginx-kafka01 system]# rpm -qa |grep openssh openssh-clients-7.4p1-16.el7.x86_64 openssh-7.4p1-16.el7.x86_64 openssh-server-7.4p1-16.el7.x86_64

讯享网

3.2、sshd中d的含义

d表示守护进程:daemon。一直在内存里运行的程序,除非人为的停止。

ssh daemon :ssh

openssh 提供某些ssh的工具---客户端

openssh-client 客户端程序

openssh-server 服务器端程序

c/s架构的软件。

使用什么软件实现ssh:openssh(Linux中可以实现ssh服务,但是Windows中没有ssh服务):开源免费的。

扩展:

rpm是Linux里的一个软件管理的命令,在redhat/centos里使用没有使用oracle Linux

rpm -q 查询 query

rpm  -a  -all :所有

rpm -qa 查询本机已经安装的所有的软件。

二、ssh搭建+配置+排错+命令

1、ssh的命令的使用

 第一次连接登录需要你输入yes,不是第一次就不需要:第一次登录相当于发送对方的公钥过来。将客户机上sshd守护进程的公钥复制到本地,存放在本地~/.ssh/known_hosts文件中,每行存放一台服务器的公钥,用来验证服务器的身份。

1、 只是进行登录

(1)这是第一次登录:

192.168.2.132登录到192.168.2.152

ssh相当于一个xshell服务。

①ssh 用户名@服务器地址(推荐使用)

讯享网[root@nginx-kafka02 ~]# ssh root@192.168.2.152 连接到192.168.2.152 The authenticity of host '192.168.2.152 (192.168.2.152)' can't be established. ECDSA key fingerprint is SHA256:+q5FKuWvEqBzdvqWS+7L3pGu5otwv/yepkY1j5iOaCY. ECDSA key fingerprint is MD5:d1:9e:bd:5f:49:49:37:d8:5d:c6:c3:f8:dd:10:c7:b8. Are you sure you want to continue connecting (yes/no)? y Please type 'yes' or 'no': yes Warning: Permanently added '192.168.2.152' (ECDSA) to the list of known hosts. root@192.168.2.152's password: Last failed login: Wed Jul 27 12:09:43 CST 2022 from 192.168.2.132 on ssh:notty There was 1 failed login attempt since the last successful login. Last login: Wed Jul 27 11:55:11 2022 from 192.168.2.118

②ssh  服务器地址(不指定登陆用户,默认会使用当前的用户名远程连接)

[daijun@manager161 ~]$ ssh 192.168.0.180

(2)不是第一次登录:192.168.2.152登录到192.168.2.132

③ ssh -l 用户名 服务器地址

讯享网[root@localhost ssh]# ssh -l cali 192.168.1.173 cali@192.168.1.173's password: Last login: Wed Jul 27 12:01:25 2022 from 192.168.1.101 [cali@nginx-kafka01 ~]$ exit 登出

①ssh:远程登录

远程登录的命令

④ ssh -p   端口号 ip地址            # -p :port:指定端口号 

[root@nginx-kafka01 ~]# ssh -p 22 root@192.168.2.132 Last login: Fri Jul 29 16:12:45 2022 from 192.168.2.123 

2、运行远程机器上的脚本或者命令

(1)在远程机机上创建文件夹。(mkdir)

讯享网[root@manager161 .ssh]# ssh 192.168.0.180 mkdir /luogg{1..10} [root@manager161 .ssh]# ssh 192.168.0.180 sudo mkdir /danyh{1..10}

(2)在远程机上执行脚本文件

[root@manager161 .ssh]# ssh 192.168.0.180 sudo bash /lianxi/scan_lan_ip.sh

1.1、sftp是什么

sftp是基于ssh协议的ftp功能,底层使用的是ssh协议。提供的是文件的上传和下载(远程登录到另外一台机器上进行文件的上传和下载)

sftp 用户名@远程主机ip地址

讯享网[root@nginx-kafka01 ssh]# sftp root@192.168.2.132 root@192.168.2.132's password: Connected to 192.168.2.132. 

lpwd:是查看本机所在路径

!ls:是查看本机所在路径里面的文件

cd:是切换远程机的路径

lcd:是切换本机的路径

get + 文件:下载

put + 文件:上传

put -r +文件夹 上传文件夹

exit 退出

sftp> pwd 查看远程机上所在路径 Remote working directory: /root sftp> lpwd 查看本机所在路径 Local working directory: /etc/ssh sftp> !ls 查看本机所在路径里面的文件 boot sshd_config ssh_host_ecdsa_key.pub ssh_host_rsa_key moduli sshd_config.bak ssh_host_ed25519_key ssh_host_rsa_key.pub ssh_config ssh_host_ecdsa_key ssh_host_ed25519_key.pub sftp> cd sftp> lcd sftp> get +文件:下载 sftp> put +文件:上传 sftp> put -r +文件夹 上传文件夹 sftp> put -r grub2 :上传grub2文件夹 sftp> exit 退出

1.2、scp是什么

scp是远程拷贝 ,底层是通过ssh协议远程连接到其他机器上,复制文件。

scp:s:ssh   cp:copy

 scp命令推送文件在linux服务器之间。

1、复制远程机上的文件到本机。 scp -r   用户名+远程机ip: 复制文件需要接-r选项

将192.168.2.132的root用户的/boot文件复制到当前用户/etc/ssh。就可以看到当前用户下的ssh文件里面就有boot文件。

讯享网[root@nginx-kafka01 ssh]# scp -r root@192.168.2.132:/boot /etc/ssh 源 目的地 root@192.168.2.132's password: Permission denied, please try again. root@192.168.2.132's password: [root@nginx-kafka01 ssh]# ls boot sshd_config ssh_host_ecdsa_key.pub ssh_host_rsa_key moduli sshd_config.bak ssh_host_ed25519_key ssh_host_rsa_key.pub ssh_config ssh_host_ecdsa_key ssh_host_ed25519_key.pub

2、在远程机上创建文件:

[root@manager161 lianxi9]# scp mkdir.sh root@192.168.0.180:/root mkdir.sh 100% 42 10.9KB/s 00:00 

3、复制本机上的文件到远程机上。

将/etc/passwd 复制到192.168.1.173机器上的cali用户的家目录下。

讯享网[root@localhost ssh]# scp -r /etc/passwd cali@192.168.1.173:~ cali@192.168.1.173's password: passwd 100% 1692 745.6KB/s 00:00

4、在远程机上执行脚本。

cat ctrl_mysql.sh   实现传递脚本到服务器,然后执行传递过去脚本

在远程机上创建文件夹的脚本。

[root@manager161 lianxi9]# cat mkdir.sh 是具体需要做什么工作的脚本 for i in {1..10} do mkdir -p feng$i done

在本机上编写脚本实现传递脚本到服务器,然后执行传递过去脚本。

讯享网[root@manager161 lianxi9]# cat ctrl_mysql.sh 实现传递脚本到服务器,然后执行传递过去脚本 for i in {1..100} do scp /lianxi9/mkdir.sh root@192.168.0.$i:/root ssh root@192.168.0.$i bash /root/mkdir.sh done

2、ssh服务的文件配置

ssh服务的配置文件存放在:/etc/ssh

配置文件:给进程传递参数的。

[root@nameserver ssh]# cd /etc/ssh/ sshd_config  --》服务器端的配置文件  server   --》进程:sshd  ssh_config --》ssh命令使用的配置文件 client  --》进程:ssh ssh_host_ecdsa_key.pub  --》ecdsa加密算法的公钥 ssh_host_ecdsa_key    --》ecdsa加密算法的私钥

2.1、查看、修改ssh服务中的配置文件(配置文件详解)

1、查看配置文件:

#pam认证模块 --》配置路径/etc/pam.d 这个目录下面存放的是每个需要认证的服务的配置,文件名就是服务名

UseDNS yes #是否将客户端主机名解析为ip

#此过程不顺利的话,会非常的慢,会影响登陆认证的速度,可以将其设置为no

讯享网[root@nginx-kafka01 etc]# vim /etc/ssh/sshd_config (修改文件,传递参数) Port 22 #修改默认监听端口(默认22端口) #AddressFamily any ListenAddress 0.0.0.0 表示可以连接的ip地址:0.0.0.0表示在本机上的任意ip都可以访问 #ListenAddress :: HostKey /etc/ssh/ssh_host_rsa_key #HostKey /etc/ssh/ssh_host_dsa_key HostKey /etc/ssh/ssh_host_ecdsa_key HostKey /etc/ssh/ssh_host_ed25519_key # Ciphers and keying #RekeyLimit default none # Logging #SyslogFacility AUTH SyslogFacility AUTHPRIV #LogLevel INFO # Authentication: ........ #LoginGraceTime 2m #设置为运行root用户登录:yes,no就是不允许用户使用root用户进行登录。 PermitRootLogin yes 允许root用户登陆,默认为yes #StrictModes yes #MaxAuthTries 6 #MaxSessions 10 #PubkeyAuthentication yes 是否开启公钥认证 #UsePAM yes #使用pam认证 .... # To disable tunneled clear text passwords, change to no here! #PasswordAuthentication yes #PermitEmptyPasswords no PasswordAuthentication yes #允许密码验证登录 #UseDNS yes #是否将客户端主机名解析为ip

sshd_config --->sshd服务端的进程

ssh_config ----》ssh客户端命令的配置文件

2、配置文件(/etc/ssh/sshd/config)里面的详解:

denyusers:禁止登录的用户

maxauth tries 6:表示最多能输6次密码。

端口号不能随意更改:因为端口号的范围是从0到65535(2^16次)。

 修改配置文件之后(永久修改),根据自己的需求进行修改,修改完成之后需要重启进程:(service sshd restart)

扩展:重启的过程就是kill之前的进程,然后重新启动一个新的进程。

3、重启sshd

三个方法选择其一:

[root@nginx-kafka01 ssh]# service sshd restart [root@nginx-kafka01 ssh]#systemctl restart sshd [root@nginx-kafka01 ssh]#restart sshd. service 

===扩展===

tail -f secure 盯着文件的末尾看。

讯享网 [root@nginx-kafka01 log]# grep "Failed password" secure 查看哪些登录失败的

lastlog:查看哪些登录的用户。

[root@nginx-kafka01 ssh]# lastlog 用户名 端口 来自 最后登陆时间 root pts/3 192.168.2.123 五 7月 29 16:12:45 +0800 2022 bin 从未登录过 daemon 从未登录过 adm 从未登录过

 如何查看哪些是开机启动的:systemctl list-unit-files

讯享网[root@sc-mysql ~]# systemctl list-unit-files UNIT FILE STATE proc-sys-fs-binfmt_misc.automount static dev-hugepages.mount static dev-mqueue.mount static proc-sys-fs-binfmt_misc.mount static sys-fs-fuse-connections.mount static sys-kernel-config.mount static sys-kernel-debug.mount static tmp.mount disabled brandbot.path disabled systemd-ask-password-console.path static systemd-ask-password-plymouth.path static systemd-ask-password-wall.path static 

其中 enabled 表示开机就可以启动的,

disabled是不能启动的。

static表示该服务与其他服务相关联,不能单独设置该服务的启动状态,为其他的需要使用的提供支持。

4、设置sshd服务开机自启

systemctl enable sshd 设置开机自启

[root@nginx-kafka01 ~]# systemctl enable sshd 设置开机自启 查看和设置默认的 target :systemctl get-default [root@nginx-kafka01 ~]# systemctl get-default 取得目前的 target(运行级别) multi-user.target [root@nginx-kafka01 ~]# cd /etc/systemd/system [root@nginx-kafka01 system]# ll 总用量 4 drwxr-xr-x. 2 root root 57 2月 26 18:01 basic.target.wants lrwxrwxrwx. 1 root root 46 2月 26 18:01 dbus-org.freedesktop.NetworkManager.service -> /usr/lib/systemd/system/NetworkManager.service lrwxrwxrwx. 1 root root 57 2月 26 18:01 dbus-org.freedesktop.nm-dispatcher.service -> /usr/lib/systemd/system/NetworkManager-dispatcher.service lrwxrwxrwx. 1 root root 37 2月 26 18:06 default.target -> /lib/systemd/system/multi-user.target

3、查看sshd服务是否启动

1、看进程

2、看端口  

3、直接访问 

4、看日志

3.1、 查看进程

ps -aux |grep ssh或者 ps -ef|grep ssh

讯享网1、查看进程 [root@localhost acl]# ps -ef |grep ssh 查看进程 root 6858 1 0 09:28 ? 00:00:00 /usr/sbin/sshd -D root 7379 6858 0 09:29 ? 00:00:00 sshd: root@pts/0 root 7398 6858 0 09:29 ? 00:00:00 sshd: root@pts/1 root 8020 7722 0 11:37 pts/1 00:00:00 grep --color=auto ssh [root@localhost acl]# pidof sshd 查看进程号,有就已经启动 7398 7379 6858 

3.2 看端口(需要知道端口号)

lsof -i:端口号、netstat -anplut |grep 端口号 

[root@localhost acl]# lsof -i:22 查看端口号的(需要知道端口号) COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 6858 root 3u IPv4 37869 0t0 TCP *:ssh (LISTEN) sshd 6858 root 4u IPv6 37878 0t0 TCP *:ssh (LISTEN) sshd 7379 root 3u IPv4 39374 0t0 TCP localhost.localdomain:ssh->192.168.119.1:50371 (ESTABLISHED) sshd 7398 root 3u IPv4 39493 0t0 TCP localhost.localdomain:ssh->192.168.119.1:50374 (ESTABLISHED) [root@localhost acl]# netstat -atpln |grep 22 tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 6858/sshd tcp 0 36 192.168.119.137:22 192.168.119.1:50374 ESTABLISHED 7398/sshd: root@pts tcp 0 0 192.168.119.137:22 192.168.119.1:50371 ESTABLISHED 7379/sshd: root@pts tcp6 0 0 :::22 :::* LISTEN 6858/sshd

0.0.0.0:22表示在本机所有ip上监听22端口。

0.0.0.0:* 表示允许任意ip,任意端口客户端来连接。

3.3  直接访问

直接输入ssh  +目标主机地址 的登录指令。

3.4 看日志

日志文件存放路径:/var/log/secure

 /var/log:系统的所有日志存放位置,里面存放的文件为:

/var:-----variable 变量

/etc:--诸如此类,其他

log:日志

①bot里面存放启动,②messages里面存放普通,③secure存放与安全相关:存放④audit:安全审计服务

/var/log/secure 里会记录sudo执行的命令,可以查询到。

/var/log/audit 安全审计相关服务日志(audit.log)

auditctl

Linux的audit审计系统是提供系统中上事件的各种动作和事件,比如系统调用,文件修改,执行的程序。(只用于记录,不会进行安全问题组织)

audit的学习网站:https://zhuanlan.zhihu.com/p/

扩展知识点:

查看命令属于哪个包:

讯享网root@sanchuang ~]# ①which netstat #找到命令的绝对路径 /usr/bin/netstat [root@sanchuang ~]# rpm -qf /usr/bin/netstat #查看这个绝对路径执行文件属于哪个包 net-tools-2.0-0.51.git.el8.x86_64 ②或者yum provides netstat 

所有的服务都是一个程序:

ssh中关闭服务,客户端连接还在 systemctl stop sshd。

4、故障排查

如果修改配置文件之后,重启也没生效的话,就需要进行排查。建议进行关闭selinux和防火墙。

4.1、selinux是什么

selinux是Linux系统里的一套安全机制,用来保护Linux系统的安全,会限制进程去做某些对安全有威胁的事情,永久修改selinux的策略为disable。

1、getenforce:查看selinux的状态,临时修改selinux的策略。

[root@nginx-kafka01 ssh]# getenforce Disabled (如果是enforcing,要修改为disable) [root@nginx-kafka01 ssh]# setenforce 0 #临时调整selinux的策略为宽容模式 [root@nginx-kafka01 ssh]# getenforce Permissive

2、永久修改selinux的策略:修改配置文件:

讯享网[root@nginx-kafka01 selinux]# cat /etc/selinux/config (可以在/etc/selinux/config文件下面进行永久修改) # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of three values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted 

4.2、关闭防火墙

修改完之后,需要关闭防火墙。systemctl disable firewalld或者service  disable firewalld。

root@localhost ssh]# systemctl firewalld stop 关闭防火墙 Redirecting to /bin/systemctl stop firewalld.service

经常需要给openssh进行升级,如何保证Linux系统的安全?

yum update openssh openssh-clients openssh-server

三、ssh服务器加固

①修改端口

②禁用root用户

③ 升级openssh

④秘钥认证:需要进行配置

⑤密码认证:默认开启的:经常更换密码+设置复杂的密码

比如禁用root用户:

前提条件是PermitRootLogin no 允许用户登录设置为no:

 指定root用户去xshell中登录sshd的登录不了(因为设置了不允许root用户登录),而在xshell中使用普通用户先登录进去之后,再切换成root用户登录之后就能登录的原因:因为使用普通用户登录xshell之后已经进入了Linux系统里面,再使用su -root切换到root用户的时候不需要进过ssh登录认证,因为它已经进入到bash进程中了。

四、ssh服务远程登录流程

1、登录流程图为:

ssh服务登录流程详解:一个客服端client(xshel)通过使用用户名(root)和密码()进行登录的话,通过sshd服务进行登录认证:sshd服务会去sshd_config文件下面查看是否允许root用户登录,如果允许的话,就会去Linux系统中(server)的/etc/passwd 和/etc/shadow文件中查看输入的用户名和密码是否正确。本地登录访问的是Linux系统里面的/etc/passwd 和/etc/shadow,不需要进行ssh服务登录认证。

2、扩展:如何将一个连接到自己的ssh的普通用户踢出去:杀死其所对应的进程。

根据终端号找到对应的bash进程,然后kill进程。比如:

讯享网[root@nginx-kafka01 system]# w (查看到连接的用户) 11:37:20 up 2:12, 4 users, load average: 0.00, 0.03, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 09:39 1:57m 0.01s 0.01s -bash root pts/0 192.168.2.118 09:25 0.00s 0.03s 0.00s w root pts/1 192.168.2.118 10:14 9:12 0.06s 0.06s -bash root pts/2 192.168.2.144 11:37 18.00s 0.00s 0.00s -bash [root@nginx-kafka01 system]# ps -aux|grep bash (查看bash进程:pts/2,对应的终端号是:8591) root 7852 0.0 0.2  2048 pts/0 Ss 09:25 0:00 -bash root 7879 0.0 0.2  2072 tty1 Ss+ 09:39 0:00 -bash root 8081 0.0 0.2  2228 pts/1 Ss+ 10:14 0:00 -bash root 8591 0.0 0.2  2080 pts/2 Ss+ 11:37 0:00 -bash root 8609 0.0 0.0  988 pts/0 R+ 11:38 0:00 grep --color=auto bash [root@nginx-kafka01 system]# kill -9 8591 (杀死对应的进程),连接上的用户就会马上断开 [root@xieshan ~]# 连接断开的样子: Connection closed.

下一篇将会详细讲解ssh服务的两种登录方式。 

小讯
上一篇 2025-04-03 15:31
下一篇 2025-03-19 12:13

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/126246.html