公司网站创建,重庆seo排名技术,北京网站维护一般价格多少,模板网免费下载官网目录 一、SSH基础
1、什么是ssh服务器
2、对比一下ssh协议与telnet协议
3、常见的底层为ssh协议的软件#xff1a;
4、拓展
二、SSH软件学习
1、ssh服务软件学习
2、sshd公钥传输的原理#xff1a;
3、ssh命令学习#xff1a;
4、学习解读sshd服务配置文件#x…目录 一、SSH基础
1、什么是ssh服务器
2、对比一下ssh协议与telnet协议
3、常见的底层为ssh协议的软件
4、拓展
二、SSH软件学习
1、ssh服务软件学习
2、sshd公钥传输的原理
3、ssh命令学习
4、学习解读sshd服务配置文件
三、ssh服务的应用
1、使用密钥对免密码登录
第一步在客户端自己生成一对密钥使用命令ssh-keygen
第二步将公钥文件导入给服务器检查自己会产生一个known_hosts文件服务器对应用户的家目录的.ssh目录下也会产生一个authorized_keys文件。
第三步验证是否免密这个是单向的如果需要服务器也能连接客户端那么还需要在服务器同样做设置 2、黑白名单设置
黑白名单的语法
第一种白名单
第二种 黑名单 一、SSH基础
1、什么是ssh服务器
ssh是一种安全通道协议主要用来实现远程登录、数据传输等ssh协议对通信双方的数据传输进行加密处理其中包括用户登录时输入的用户口令ssh为建立在应用层和传输层基础上的安全协议。
2、对比一下ssh协议与telnet协议
telnet协议是明文的端口号是tcp的23端口
ssh协议数据传输是加密的可以防止信息泄露数据传输是压缩的可以提高传输的速度端口是tcp的22端口
SSHSecure Shell目前较可靠是专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题透过SSH可以对所有传输的数据进行加密也能够防止DNS欺骗和IP欺骗。
3、常见的底层为ssh协议的软件
Linux客户端: ssh, scp, sftpsloginWindows客户端xshell, MobaXterm,putty, securecrtOpenSSH 是实现SSH协议的开源软件项目适用于各种UNIX、 Linux 操作系统。Centos 7系统默认已安装openssh相关软件包并将sshd 服务添加为开机自启动。执行systemctl start sshd命令即可启动sshd 服务
4、拓展
Windows上自带的远程连接工具是mstsc是使用的tcp的3389端口使用的RDP协议 二、SSH软件学习
1、ssh服务软件学习
软件名openssh在centos7中为openssh-server
服务名称sshd
服务端主程序/usr/sbin/sshd
服务端配置文件/etc/ssh/sshd_config ##ssh服务端主要包括两个服务功能 ssh远程链接和sftp服务文件传输功能
客户端配置文件/etc/ssh/ssh_config
2、sshd公钥传输的原理 客户端发起连接请求 服务端返回自己的公钥以及一个会话ID这一步客户端得到服务端公钥 客户端生成密钥对 客户端用自己的公钥异或会话ID异或是算法有很多种计算出一个值Res并用服务端的公钥加密 客户端发送加密值到服务端服务端用私钥解密得到Res 服务端用解密后的值Res异或会话ID计算出客户端的公钥这一步服务端得到客户端公钥 最终双方各自持有三个秘钥分别为自己的一对公、私钥以及对方的公钥之后的所有通讯都会被加密
原理是这样但是在实际操作中客户端把服务器的公钥记录在了~/.ssh/known_hosts文件中 拓展 思考我们登录时怎么确认是不是我需要连接的服务器有个前提是我能碰的着服务器 首先在客户端连接服务器 服务器连接自己试试 3、ssh命令学习
ssh命令的语法ssh [选项] 用户名服务器ip地址或域名
选项
-p 端口号不加默认是22号端口如果是端口被修改了需要指定端口号
-l 用户名这个和“用户名”效果一样
-t 跳板机服务器ip地址比如需要访问外网的时候需要先过内外网服务器等等
-o 配置文件参数变量值比如ssh 192.168.20.10 -o StrictHostKeyCheckingno (允许免密登录)ssh 还能直接跟上命令
如
ssh 192.168.91.101 hostname 显示远程服务器的主机名4、学习解读sshd服务配置文件
[rootlocalhost /]#vim /etc/ssh/sshd_config 17 #Port 22 ##这是sshd服务监听的端口为了安全起见建议更改默认端口为一个五位数以上的端口号18 #AddressFamily any19 #ListenAddress 0.0.0.0 ##可以改为自己的自己的ip地址20 #ListenAddress ::##用来设置sshd服务器绑定的IP地址32 SyslogFacility AUTHPRIV 33 #LogLevel INFO##当有人使用 SSH 登入系统的时候SSH 会记录信息这个信息要记录的类型为AUTHPRIVsshd 服务日志存放在/var/log/secure。##可以做日志分离优化##LogLevel用来设定sshd日志消息的级别与上面记录的等级息息相关35 # Authentication:##限制用户必须在指定的时限内认证成功0 表示无限制。默认值是 120 秒37 #LoginGraceTime 2m##LoginGraceTime用来设定如果用户登录失败在切断连接前服务器需要等待的时间单位为妙38 #PermitRootLogin yes##PermitRootLogin用来设置能不能以root身份ssh登录40 #MaxAuthTries 6##用来设置最大失败尝试登陆次数为641 #MaxSessions 10##设置同一个连接最大会话43 #PubkeyAuthentication yes##基于key验证生产中需要打开63 #PasswordAuthentication yes64 #PermitEmptyPasswords no ##是否允许空密码登录no表示不允许需要密码##密码验证建议还是需要的可以通过认证的秘钥来登陆来减少密码交互。65 PasswordAuthentication yes##基于用户名和密码连接默认为yes96 UsePAM yes##设置是否通过PAM验证需要的98 #AllowAgentForwarding yes ##允许代理99 #AllowTcpForwarding yes ##允许tcp那个代理
100 #GatewayPorts no
##设置是否允许远程客户端使用本地主机的端口转发功能出于安全考虑建议禁止115 #UseDNS no
##UseDNS是否使用dns反向解析建议关闭内网改为no可以提高速度这是可以添加的选项
#AllowUsers用户名1 用户名2 用户名3 ...
##指定允许通过远程访问的用户多个用户以空格隔开
比如AllowUsers zhangsan192.168.91.101 lisi
##默认拒绝所有
##允许所有的主机访问我的lisi用户
##只允许192.168.91.101上的所有用户访问本机的zhangsan用户#AllowGroups组名1 组名2 组名3 ...
##指定允许通过远程访问的组多个组以空格隔开。当多个用户需要通过ssh登录系统时可将所有用户加入一个组中。#DenyUsers用户名1 用户名2 用户名3 ...
##指定禁止通过远程访问的用户多个用户以空格隔开
举例DenyUsers liwu
#拒绝liwu被访问#DenyGroups组名1 组名2 组名3 ...
##指定禁止通过远程访问的组多个组以空格隔开。 三、ssh服务的应用
1、使用密钥对免密码登录
第一步在客户端自己生成一对密钥使用命令ssh-keygen
##使用命令生成一对密钥
[rootlocalhost .ssh]#ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): ##默认放在用户的家目录下的~/.ssh/下
Enter passphrase (empty for no passphrase): ##对密钥文件加密密码至少5个字符
Enter same passphrase again: ##再次输入密码
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:VqCGTmM6KO1NlBm1NNuCUZYE7ZXsCrZedcKdDaS4kFQ rootlocalhost.localdomain
The keys randomart image is:
---[RSA 2048]----
| BEo.o. |
| . oBo. |
| %.Bo.. |
| o *o.o. . |
|o .oo.oSo |
|.. . o. |
| .... |
| . |
| |
----[SHA256]-----
##验证密钥对成功创建
[rootlocalhost .ssh]#ls
id_rsa id_rsa.pub第二步将公钥文件导入给服务器检查自己会产生一个known_hosts文件服务器对应用户的家目录的.ssh目录下也会产生一个authorized_keys文件。 第三步验证是否免密这个是单向的如果需要服务器也能连接客户端那么还需要在服务器同样做设置 2、黑白名单设置
黑白名单的语法
#AllowUsers用户名1 用户名2 用户名3 ...
##指定允许通过远程访问的用户多个用户以空格隔开
比如AllowUsers zhangsan192.168.91.101 lisi
##默认拒绝所有
##允许所有的主机访问我的lisi用户
##只允许192.168.91.101上的所有用户访问本机的zhangsan用户#AllowGroups组名1 组名2 组名3 ...
##指定允许通过远程访问的组多个组以空格隔开。当多个用户需要通过ssh登录系统时可将所有用户加入一个组中。#DenyUsers用户名1 用户名2 用户名3 ...
##指定禁止通过远程访问的用户多个用户以空格隔开
举例DenyUsers liwu
#拒绝liwu被访问#DenyGroups组名1 组名2 组名3 ...
##指定禁止通过远程访问的组多个组以空格隔开。
第一种白名单
[rootlocalhost ssh]#vim /etc/ssh/sshd_config
#手动添加
AllowUsers zhangsan192.168.20.10
##表示只允许192.168.20.10主机上的任意用户能够连接zhangsan
##并且默认拒绝所有 第二种 黑名单
##服务器上添加黑名单
[rootlocalhost .ssh]#vim /etc/ssh/sshd_config 2 DenyUsers xueyin192.168.20.10拓展WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!报错 翻译为提醒你远程主机的身份已经修改了 系统之前连接过192.168.20.10记录了它的公钥现在换了一台主机ip也是这个但是公钥与缓存不一致所以ssh好心提醒一下 解决思路根据生产环境需求如果是安全的那么删掉本地的密钥缓存删除~/.ssh/known_hosts文件中的对应192.168.20.10的公钥。