SSH相关内容

内容概述

1.什么是ssh
2.为什么要使用ssh
3.远程连接中数据的加密方式
4.ssh相关命令
-4.1 ssh命令
-4.2 xshell连不上虚拟机排错
-4.3 scp命令回顾,sftp命令介绍
5.ssh远程登录方式
-5.1 基于账户密码的方式远程登录
-5.2 使用密钥进行登录
-5.3 免密登录以及免密场景
6.ssh安全优化 

内容详细

1.什么是ssh

ssh是一套网络协议,目的在于保证安全的网络服务以及加密远程登录信息.
ssh命令是openssh软件包中的一个套件命令,使用ssh加密的协议进行远程登录,并且实现对服务器的远程管理
我们在windows平台,常用xshell,CRT工具进行远程登录
linux,macos,可以直接在命令行终端,输入ssh指令
ssh连接的是服务器上运行的 sshd 这个应用程序,且后台监听的是22端口 # (默认端口,地球人都知道,一般要改)
语法
ssh	 用户名@ip地址 (选项 命令)
-p 指定的端口
eg:比如,默认端口改为了  24466
ssh egon@192.168.174.10	-p 24466	# 指定端口的远程连接
远程执行服务器的命令
ssh root@192.168.174.10	"free -m"	# 远程查看服务器内存使用状况

2.为什么要使用ssh

早期我们使用FTP和telnet工具进行服务器的远程登录,但是这两种协议都基于明文传输,容易被黑客窃取到数据,获得登录密码,对服务器造成安全隐患.而ssh协议登录时,信息在传输时是被加密的,即使信息被抓取,也无法破解密码,保证了服务器的安全.
ssh和telnet的区别
telnet:
 1.不⽀持root直接登录,只能⽤普通⽤户登录
 2.数据传递是明⽂的,不够安全
 
ssh:
 1.⽀持root直接登录
 2.所有数据传递都是加密的

3.远程连接中数据的加密方式

加密方式:
	# 对称加密		使用同一密钥对数据加密,解密时也需要这个密钥.
	# 非对称加密		有两个密钥,公钥和私钥,公钥理解为一把锁,私钥理解为开锁的钥匙.
原理:
	对称加密:
计算机a远程连接计算机b,通过密钥进行加密,通信的时候除了传输加密信息,还得把密钥也传过去,对方才能根据密钥进行解密.
加密,解密效率高
存在的问题:如果密码在传输过程中被抓取,就会造成安全隐患.
	非对称加密:
非对称加密解决了对称加密的安全隐患,防止密钥被截取.
公钥:public key	# 相当于一把锁
私钥:private key	# 相当于开这把锁的软件	公私钥是成对出现的
# 使用公钥加密后的数据,只能使用对应的私钥才能解开,除非私钥丢失,否则数据被破解的可能性极低.
计算机a和计算机b进行远程连接,计算机a和b都把自己的公钥(锁)复制一份发给对方,称之为公钥交换,加密数据就用对方的公钥进行加密,发送给对方,对方就用自己的私钥进行解密.
公钥交换也会有一个流程,了解即可.
	

4.ssh相关命令

4.1 ssh命令

ssh root@172.16.1.31
ssh             # 命令
root            # 连接远端服务器时使用的用户,远端服务器上真实存在的用户
                # 如果连接时不指定用户,则使用当前服务器的当前用户连接的远端服务器上的相同用户
@               # 分割符
172.16.1.31     # 远端服务器的IP地址
-p              # 指定ssh服务端的端口
22              # ssh的端口
-o StrictHostKeyChecking=no     # 首次连接不询问

4.2 xshell连不上虚拟机排错

1.查看网络
    ping 10.0.0.31
2.查网卡,网卡是否启动
3.查端口
    telnet 10.0.0.31 22
4.检查sshd服务是否启动
	systemctal status sshd
5.检查防火墙,selinux是否关闭
6.虚拟机的虚拟网络编辑器
7.查看windows的网卡

4.3 scp命令回顾,sftp命令介绍

1.scp命令回顾
类似于rsync命令,远程拷贝,scp时全量,rsync时增量
scp 也支持推和拉
推送: scp -r /etc root@172.16.1.31:/tmp/
拉取: scp -r root@172.16.1.31:/tmp/1.txt /tmp/
参数:
-P 指定端口,默认22端口可不写
-r 表示递归拷贝目录
-p 表示在拷贝文件前后保持文件或目录属性不变
-l 限制传输使用带宽(默认kb)
总结:
	1.scp通过ssh协议加密方式进行文件或目录拷贝.
	2.scp连接时的用户作为为拷贝文件或目录的权限.
	3.scp支持数据推送和拉取,每次都是全量拷贝,效率较低.
2.sftp命令介绍
# ⽂件传输命令
 ftp root@10.0.0.31
# 查看连接后服务器
sftp> ls
# 查看本地服务器
sftp> lls
# 命令 远程服务器⽂件 本地服务器位置
sftp> get 1_nfs.gif ./
# 命令 本地服务器⽂件 远程服务器位置
sftp> put /data/1_nfs.gif /tmp/
# 图形界⾯: Xftp FileZilla FlashFXP
sftp:
 1.能上传⽂件夹
 2.能⽀持断点续传
 3.⽀持上传⼤于4G的⽂件
rz:
 1.不能上传⽂件夹
 2.不⽀持断点续传
 3.只能上传⼩于4G的⽂件

5. ssh远程登录方式

5.1 基于账户密码的方式远程登录

需要知道服务器的IP地址,端口,系统用户,密码,即可通过ssh客户端命令登录远程主机.
# ssh root@172.16.1.31 -p 22
root@172.16.1.31's password: 1
Last login: Fri Aug  6 14:35:51 2021 from 172.16.1.31
这种登录方式存在的问题
1.密码强度
2.服务器多了密码容易忘记
3.密码要定期修改,更加不容易记住
4.密码错误三次会锁定用户

5.2 使用密钥进行登录

默认情况下,通过ssh客户端命令登陆远程服务器,需要提供远程系统上的帐号与密码,但为了降低密码泄露的机率和提⾼登陆的⽅便性,建议使⽤密钥验证⽅式.
1.生成密钥对
-t 指定秘钥类型 rsa dsa
-C 指定⽤户邮箱
ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
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:4Xkl/SrDG68GrF3vIRTye+vlfCv5cScZCfaPMmKjxs0 root@oldboy
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|           .     |
|        o o =    |
|       . = = + . |
|       .S +   =  |
|        o+.. . = |
|       + =@.* *.+|
|      . +oE@.@ .=|
|       ...o+= =+.|
+----[SHA256]-----+

5.3 免密登录以及免密场景

1.免密登录
原理:
	1.不必做公钥交换了,登录之前我们要把客户端的公钥发给服务端
	2.现在我们发起远程连接请求
	3.服务端生成一串随机的字符串,用客户端公钥加密,发给客户端
	4.客户端用自己的私钥解密,得到服务端生成的随机字符串,然后将随机字符串用公钥加密后再发给服务端
	5.服务端解密后与自己的随机字符串进行对比,将反馈发给客户端(依然需要加密)
	6.客户端解密,收到反馈信息.
操作:
	1.生成公钥和私钥
	ssh-keygen -t rsa
	2.将公钥推送至远程主机
	ssh-copy-id -i .ssh/id_rsa.pub root@172.16.1.7
	3.连接测试(不需要输入密码)
2.免密场景
	1.)实践场景,用户通过Windows/MAC/Linux客户端连接跳板机免密码登录,跳板机连接后端无外网的Linux主机实现免密登录
	2.)实践多用户登陆一台跳板机免密码
	3.)实践跳板机登陆多台服务器免密码

6.ssh安全优化

# SSH作为远程连接服务,通常我们需要考虑到该服务的安全,所以需要对该服务进行安全方面的配置.
1.更改远程连接登陆的端口
2.禁止ROOT管理员直接登录
3.密码认证方式改为密钥认证
4.重要服务不使用公网IP地址
5.使用防火墙限制来源IP地址

优化的配置:
vim /etc/ssh/sshd_config
# 修改ssh服务的端口
Port 1748
# 禁止使用root登录服务器
PermitRootLogin no
# 禁止使用密码登录服务器
PasswordAuthentication no
 
UseDNS                  no      # 禁止ssh进行dns反向解析,影响ssh连接效率参数
GSSAPIAuthentication    no      # 禁止GSS认证,减少连接时产生的延迟
posted @ 2021-08-06 18:26  堇雪月寒风  阅读(61)  评论(0编辑  收藏  举报
Live2D