什么是SSH
SSH 或 Secure Shell 协议是一种远程管理协议,允许用户通过 Internet 访问、控制和修改其远程服务器。
SSH 服务是作为未加密 Telnet 的安全替代品而创建的,它使用加密技术来确保进出远程服务器的所有通信都以加密方式进行。
SSH是一种网络协议
简单说,SSH是一种网络协议,用于计算机之间的加密登录。
如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。
为什么需要SSH
使用SSH协议登录另一台远程计算机,这种登录是安全的,即使被中途截获,密码也不会泄露。
以前使用FTP或telnet登录服务器,都是以明文的形式在网络中发送账号密码,很容易被黑客截取到数据,篡改后威胁服务器数据安全。
端口号设定
说明:端口号只有整数,范围是从0 到65535
1~255:一般是知名端口号,如:ftp 21号、web 80、ssh 22、telnet 23号等
256~1023:通常都是由Unix系统占用来提供特定的服务
1024~5000:客户端的临时端口,随机产生
大于5000:为互联网上的其他服务预留,工作里一般建议直接用大于5000的端口,并且要使用netstat命令检查下。
SSH密码登录原理
1、加密算法(了解)
①对称加密算法(DES) 加密解密共用同一把钥匙
优点、该算法加密强度大,几乎无法破解
缺点,密钥不能丢失,拿到加密方式,自然源数据就被破解,暴露给别人了
②非对称加密算法(RSA)
非对称加密分为:公钥(Public Key)与私钥(Private Key)
使用公钥加密后的密文,只能使用对应的私钥才能解开,破解的可能性很低。
总结:
1.发送方(于超)使用接收方(杰西卡)发来的公钥将明文数据加密为密文,然后再发出;
2.接收方(杰西卡)收到密文消息后,用自己本地保存的私钥解密这个密文,最终得到明文数据;
对称、非对称加密算法区别是?
对称加密
使用同一个密钥进行加密和解密,密钥容易泄露
加密速度快,效率高
数据传输,速度快
安全性较低;
非对称加密
使用不同的密钥(公钥和私钥)进行加密和解密
加密速度远远慢于对称加密
数据传输速度慢
安全性较高
SSH认证方式
我们登录linux服务器,使用ssh登录的话有两种认证方式
账户密码
root
yuchao666
密钥认证
[root@web-7 ~]#ls /root/.ssh/id_rsa
id_rsa id_rsa.pub
(重点)SSH基于用户名密码认证原理
密码登录,使用的是目标机器的,公私钥
[root@rsync-41 ~]#ls /etc/ssh/ssh_host_ecdsa_key*
/etc/ssh/ssh_host_ecdsa_key /etc/ssh/ssh_host_ecdsa_key.pub
1.SSH客户端向SSH服务端发起登录请求
2.SSH服务端将自己的公钥发给SSH客户端
注意,如果是首次建立连接,会有如下指纹信息确认,让用户确认自己连接的机器信息正确。
[root@web-7 ~]#ssh [email protected]
The authenticity of host '10.0.0.41 (10.0.0.41)' can't be established.
ECDSA key fingerprint is SHA256:Csqwr63+SZRFFOug/IGoFTgRe8hDSI/QalSMBcC6IaU.
ECDSA key fingerprint is MD5:4c:9a:37:e2:5b:b5:de:a8:bf:90:b5:28:d8:5b:ac:60.
Are you sure you want to continue connecting (yes/no)?
3.在首次登录时,只要你输入了yes,就表示你信任了该机器的公钥,该机器的公钥信息会写入到客户端的~/.ssh/known_hosts
你可以在客户端检查该文件
[root@web-7 ~]#cat ~/.ssh/known_hosts
10.0.0.41 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBL/Sx3bAaNcKqo7pC4FTYk3gyZ6hd1D/DKUWVfOd4gZb/8XwlAxWauceHe/BAsW5Z8pEmG6AjSyHM8ckOs94c7Y=
如果你删除了该公钥,下次ssh连接,会再次让你确认机器的指纹信息
4.下一步就是等待你输入密码,只要你输入了密码,SSH客户端就会使用服务端发来的公钥,将超哥输入的密码加密为密文后,再发给SSH服务端;
[root@web-7 ~]#ssh [email protected]
The authenticity of host '10.0.0.41 (10.0.0.41)' can't be established.
ECDSA key fingerprint is SHA256:Csqwr63+SZRFFOug/IGoFTgRe8hDSI/QalSMBcC6IaU.
ECDSA key fingerprint is MD5:4c:9a:37:e2:5b:b5:de:a8:bf:90:b5:28:d8:5b:ac:60.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.0.41' (ECDSA) to the list of known hosts.
[email protected]'s password:
5.SSH服务端收到密文密码后,再用自己本地的私钥解密,看到超哥输入的密码;
[email protected]'s password: **********
你输入的密码,会被公钥加密,发送到目标机器上验证,ssh真是太靠谱了
6.SSH服务端将解密后的明文,和linux上的用户密码文件做对比,/etc/shadow,正确则登录成功
7.ssh认证成功后,返回登录成功,并且返回一个随机会话口令给客户端,这个随机口令用于后续两台机器之间的数据通信加密。
机器指纹信息
只要是两台新机器,首次ssh连接,就会出现如下的指纹确认
[root@web-7 ~]#
[root@web-7 ~]#ssh [email protected]
The authenticity of host '10.0.0.41 (10.0.0.41)' can't be established.
ECDSA key fingerprint is SHA256:Csqwr63+SZRFFOug/IGoFTgRe8hDSI/QalSMBcC6IaU.
ECDSA key fingerprint is MD5:4c:9a:37:e2:5b:b5:de:a8:bf:90:b5:28:d8:5b:ac:60.
Are you sure you want to continue connecting (yes/no)?
这一段信息意思是,无法确认10.0.0.41这台机器的真实性,但是发现了机器的指纹
SHA256:Csqwr63+SZRFFOug/IGoFTgRe8hDSI/QalSMBcC6IaU.
你自己确认下是否是你要连接的机器
查看机器公钥
直接去rsync-41机器上检查公钥信息
[root@rsync-41 ~]#
[root@rsync-41 ~]#cat /etc/ssh/ssh_host_ecdsa_key.pub
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBL/Sx3bAaNcKqo7pC4FTYk3gyZ6hd1D/DKUWVfOd4gZb/8XwlAxWauceHe/BAsW5Z8pEmG6AjSyHM8ckOs94c7Y=
指纹是公钥加密而来(sha256算法)
计算rsync-41机器的指纹,再和我们第一次ssh连接的命令比较,是否一致
对比机器指纹
ssh密码认证小结
SSH是Linux下远程管理的工具,相比Telnet安全,运维人员必备的神器!
SSH的全称Secure Shell,安全的shell,是Client/Server架构,默认端口号为22,TCP协议
必须搞懂SSH通信加密的原理、过程
搭建SSH服务
(一)关闭防火墙和selinux
# 关闭firewalld防火墙
# 临时关闭
systemctl stop firewalld
# 关闭开机自启动
systemctl disable firewalld
# 关闭selinux
# 临时关闭
setenforce 0
# 修改配置文件 永久关闭
vim /etc/selinux/config
SELINUX=disabled
二)配置yum源
# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# yum clean all
# yum makecache
这个yum源配置,
(三)软件安装
①确认是否安装openssh
由于每一台机器都是默认安装了sshd服务的,这里你可以采用期中综合架构里的任何一台机器测试。
[root@web-7 ~]#rpm -qa |grep openssh
openssh-server-7.4p1-16.el7.x86_64
openssh-clients-7.4p1-16.el7.x86_64
openssh-7.4p1-16.el7.x86_64
②查看openssh-server软件包的文件列表
[root@yuchao-linux01 ~]# rpm -ql openssh-server
# 配置文件
/etc/ssh/sshd_config
/etc/sysconfig/sshd
# 服务管理脚本
/usr/lib/systemd/system/sshd.service => systemctl start sshd
# 文件共享服务 提供文件上传下载的服务
/usr/libexec/openssh/sftp-server
# 二进制文件程序文件
/usr/sbin/sshd
# 公钥生成工具
/usr/sbin/sshd-keygen
# man手册
/usr/share/man/man5/sshd_config.5.gz
/usr/share/man/man8/sftp-server.8.gz
/usr/share/man/man8/sshd.8.gz
③查看openssh-clients软件包的文件列表
rpm -ql openssh-clients
# 客户端配置文件
/etc/ssh/ssh_config
# 远程copy命令 服务器间进行文件传输
/usr/bin/scp
# sftp客户端 上传下载文件操作
/usr/bin/sftp
/usr/bin/slogin
/usr/bin/ssh
/usr/bin/ssh-add
/usr/bin/ssh-agent
/usr/bin/ssh-copy-id
/usr/bin/ssh-keyscan
# 客户端man手册
/usr/share/man/man1/scp.1.gz
/usr/share/man/man1/sftp.1.gz
/usr/share/man/man1/slogin.1.gz
/usr/share/man/man1/ssh-add.1.gz
/usr/share/man/man1/ssh-agent.1.gz
/usr/share/man/man1/ssh-copy-id.1.gz
/usr/share/man/man1/ssh-keyscan.1.gz
/usr/share/man/man1/ssh.1.gz
/usr/share/man/man5/ssh_config.5.gz
/usr/share/man/man8/ssh-pkcs11-helper.8.gz
(四)ssh基本安全配置
提升服务器ssh安全,就是来修改该配置文件了,先来看简单的配置;
往下继续看,还准备了ssh优化篇;
man 5 sshd_config
[root@web-7 ~]#cat /etc/ssh/sshd_config
1.禁用root用户登录、降低权限
2.修改端口
配置文件如下
[root@web-7 ~]#grep -E '^(Permit|Port)' /etc/ssh/sshd_config
Port 22422
PermitRootLogin no
4.1 pwgen随机密码生成工具
别忘记创建一个用于登录的普通用户,密码随机生成
1.安装
yum install -y pwgen
2.命令参数,生成不同的密码规则
pwgen支持的选项。
-c或-大写字母
在密码中至少包含一个大写字母
-A或--不大写
不在密码中包含大写字母
-n 或 --数字
在密码中至少包含一个数字
-0 或 --no-numerals
不在密码中包含数字
-y或--符号
在密码中至少包括一个特殊符号
-r <chars> 或 --remove-chars=<chars>(删除字符
从生成密码的字符集中删除字符
-s 或 --secure
生成完全随机的密码
-B 或--模棱两可
不要在密码中包含模棱两可的字符
-h 或 --help
打印一个帮助信息
-H 或 --sha1=path/to/file[#seed] 。
使用指定文件的sha1哈希值作为(不那么)随机生成器
-C
以列形式打印生成的密码
-1
不在列中打印生成的密码
-v或--不使用元音
不要使用任何元音,以避免意外的讨厌的字。
3.生成 完全随机、携带数字的密码
[root@web-7 ~]#pwgen -sn |head -1
T0AR1i2c
4.设置密码
[root@web-7 ~]#echo T0AR1i2c | passwd --stdin yuchao01
随机生成指定风格的密码
打印,包含大写字母、数字、不包含特殊歧义、完全随机、且一行一个密码、密码长度为8、生成5个密码。
[root@web-7 ~]#pwgen -cnBs1 8 5
KaKWvp9F
4HHvsWWR
NpKWn3pN
LuqzuAh9
bR7Xg9Hs
改了配置文件就得重启
(五)服务管理
# 重启服务
systemctl restart sshd
# 查看状态
systemctl status sshd
# 进程查看方式
ps aux |grep sshd
# 端口查看方式
netstat -lntp|grep sshd
# 开启自启动
systemctl enable sshd
(六)登录测试
无法登录
[C:\~]$ ssh [email protected] 22422
可以登录
[C:\~]$
[C:\~]$ ssh [email protected] 22422
Connecting to 10.0.0.7:22422...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
WARNING! The remote SSH server rejected X11 forwarding request.
[yuchao01@web-7 ~]$
[yuchao01@web-7 ~]$echo "超哥带你学Linux"
超哥带你学Linux
3、 sshd服务部署小结
掌握ssh认证方式
ssh通信加密方式原理、流程。
密码认证模式
禁止root登录服务器,增强服务器安全性
更改ssh服务默认端口,增强服务器安全性
密码生成工具,生成随机密码,增强安全性。
熟练使用ssh客户端工具,xshell、ssh命令、secureCRT等。
标签:加密,usr,登录,密码,安全,SSH,root,ssh From: https://www.cnblogs.com/btcm409181423/p/18062061