SSH服务
一、准备
#请说明以下服务对应的端口号或者端口对应的服务
ssh 22
telnet 23
http 80
https 443
ftp 20 21
RDP 3389
mysql 3306
redis 6379
zabbix 10050 10051
elasticsearch 9200 9300
rsync 873
rpcbind 111
telnet:
1.不支持root用户登录,只允许普通用户登录
2.数据传输过程中明文的
#测目标机器的ip和端口是否能连通
ssh:
1.支持root用户登录
2.数据传输过程中时加密码
# ssh root@172.16.1.31 #链接 用户@远端ip
xshell 连不上------>
1.查看网络
ping 10.0.0.31
2.查网卡,网卡是否启动
3.查端口
telnet 10.0.0.31 22
4.检查sshd服务是否启动
5.防火墙
6.虚拟机的虚拟网络编辑器
7.查看windows的网卡
c-s 架构基于网络通信
二、命令
远程连接完成立即退出
scp
往远程目录推送文件
#带目录推送
#只推送文件
#从远程推送文件到本地
#-r 表递归 -p 拷贝前后保持文件/目录属性不变
## ssh -p 指定端口 scp -P 指定端口
#1.scp通过ssh协议加密方式进行文件或目录拷贝。
#2.scp连接时的用户作为为拷贝文件或目录的权限。
#3.scp支持数据推送和拉取,每次都是全量拷贝,效率较低。
sftp
图形化使用xftp
##1.sz/rz
1)不能上传大于4G的文件
2)不能断点续传
3)不能上传文件夹
##2.sftp
1)能上传大于4G的文件
2)支持断点续传
3)可以上传文件夹
三、验证方式
账户密码登录
#知道服务器的IP地址,端口,系统用户,密码,即可通过ssh客户端命令登陆远程主机。
[root@web01 ~]# ssh root@172.16.1.31 -p 22
root@172.16.1.31's password: 1
Last login: Tue Nov 24 09:57:59 2020 from 10.0.0.1
基于密钥登录
客户端生成密钥对(私钥+公钥)----->私钥加密(非必要)------->将公钥丢给服务端----->要远程登录哪个用户就将公钥放在对应用户的家目录下
# ssh-keygen 生成密钥对
#推送公钥到 172.16.1.7的root用户
ssh-copy-id -i .ssh/id_rsa.pub root@172.16.1.7 #客户端没改过路径的话 -i 后面不用跟路 径会自动使用默认路径
原理(手动):
1.查看公钥
[root@m01 ~]# cat .ssh/id_rsa.pub
2.在其他服务器创建文件,将内容粘贴进去
[root@nfs ~]# mkdir .ssh
[root@nfs ~]# vim .ssh/authorized_keys
3.授权文件
[root@nfs ~]# chmod 700 .ssh/
[root@nfs ~]# chmod 600 .ssh/authorized_keys
4.测试连接
#首次连接需要记录服务器信息到 .ssh/known_hosts
[root@m01 ~]# ssh 172.16.1.31
The authenticity of host '172.16.1.31 (172.16.1.31)' can't be established.
ECDSA key fingerprint is SHA256:sYhpMuszVGaHSeWKyLXMGQQ72f/6KxyExWabnY/cz6w.
ECDSA key fingerprint is MD5:bc:9c:0b:45:b5:27:71:cd:da:02:68:c0:48:71:9d:69.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.1.31' (ECDSA) to the list of known hosts.
Last login: Tue Nov 24 10:37:03 2020 from 172.16.1.7
[root@nfs ~]#
#再一次连接
[root@m01 ~]# ssh 172.16.1.31
Last login: Tue Nov 24 11:00:39 2020 from 172.16.1.61
批量命令脚本---->前提 对每台主机 / 服务器都配置了基于密钥的免密登录
四、 ssh安全优化
##SSH作为远程连接服务,通常我们需要考虑到该服务的安全,所以需要对该服务进行安全方面的配置。(安全优化)
1.更改远程连接登陆的端口
2.禁止ROOT管理员直接登录
3.密码认证方式改为密钥认证
4.重要服务不使用公网IP地址
5.使用防火墙限制来源IP地址
[root@m01 ~]# vim /etc/ssh/sshd_config
#修改ssh服务的端口
Port 1748
#禁止使用root登录服务器
PermitRootLogin no
#禁止使用密码登录服务器
PasswordAuthentication no
##加速优化
UseDNS no # 禁止ssh进行dns反向解析,影响ssh连接效率参数
GSSAPIAuthentication no # 禁止GSS认证,减少连接时产生的延迟