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认证,减少连接时产生的延迟