目录
-
概念
ssh服务介绍说明
secure shell protocol简称SSH,是由IETF网络工作小组(network working group) 制定,在进行数据传输之前,SSH先对联级数据包通过加密技术进行加密处理,加密后在进行数据传输,确保了传递的数据安全.
SSH是专门为远程登录会话和其他网络服务(例如:rsync,ansible)提供的安全性协议,利用SSH协议可以有效的防止远程管理过程中的信息泄露问题,绝大多数企业普遍采用SSH协议服务来代替传统的不安全的远程连接服务器软件(例如:Telnet/23端口/非加密的)等
-
概括
1. 特点 :
2. 身份验证机制
3. 验证过程
4. 加密机制
1. 特点
ssh是工作在传输和应用的协议
可实现远程连接,远程控制
2. 身份验证机制
密码验证:顾名思义在登录或者进行远程连接 远程控制时需要对方的用户密码
密钥对验证:密钥分为 公钥 私钥 当建立好密钥之后则不需要密码
3.验证过程
客户端发送命令请求 确认是否保存指纹信息 yes确定保持
随后输入对方主机密码
打开子shell建立会话
如果退出输入命令exit即可
4. 加密机制
单向加密:
单向加密又称为不可逆加密算法,在加密过程中不使用密钥,明文由系统加密处理成密文,密文无法解密 一般适合于验证,在验证过程中,重新输入明文,并经过同样的加密算法处理,得到相同的密文并被系统重新认证
对称加密:
对称性加密也称为密钥加密。所谓对称,就是采用这种加密方法的双方,使用方式用同样的密钥进行加密和解密
非对称加密:
非对称加密(asymmetric cryptography),也称为公开密钥加密(Public-key cryptography),是密码学的一种算法,它需要两 个密钥,一个是公开密钥,另一个是私有密钥。顾名思义,公钥可以任意对外发布;而私钥必须由用户自行严格秘密保管,绝不 透过任何途径向任何人提供,也不会透露给要通信的另一方,即使他被信任
-
基本参数
1. 配置文件
2. 配置文件解析
服务名:sshd
端口号:TCP/22
1. 配置文件
(1)服务器端
(2)客户端
没有绝对的客户端和服务器,主要是看谁是发起端,谁是接收端
ssh主程序sshd的配置文件 | /etc/ssh/sshd_config |
服务器的公钥的私钥文件 | /etc/ssh/ssh_host_* |
密钥库文件 | ~/.ssh/authorized_keys |
客户端的全局配置文件 | /etc/ssh/ssh.config |
客户端存储主机指纹的文件 | ~/.ssh/known_hosts |
客户端生成的私钥 | ~/.ssh.id_rsa |
客户端生成的公钥 | ~/.ssh.id_rsa.pub |
2. 配置文件解析
配置文件解析:
/etc/ssh/sshd_config
/etc/ssh/ssh_config
监听端口 | port |
监听地址,0.0.0.0表示监听所有地址 | Listenaddress |
是否启用密钥对验证 | PubkeyAuthentication |
是否启用密码验证 | PasswordAuthentication |
是否启用空密码,密码验证时,最好关闭 | PermitEmptyPasswords |
连接超时时间 | ConnectTimeout |
-
操作流程
ssh:远程连接的客户端工具
格式:格式:ssh 【选项】【用户】@【ip地址】
选项:-p 指定端口
-b 指定网卡
(实验案例:)
1. 指定用户登录 : 客户端以cjf01的用户身份登录到服务器
2. 不登录执行命令 :客户端使用jx02的用户身份不登录到服务器,执行查看服务器网卡配置文件的内容
【以上案例需要先在虚拟机里搭建好中继环境再进行】
1. 指定用户登录 : 客户端以cjf01的用户身份登录到服务器
首先在服务器创建cjf01用户并设置密码
[root@localhost ~]# useradd cjf01
[root@localhost ~]# passwd cjf01
更改用户 cjf01 的密码 。
新的 密码:
输入ifcomfig查看服务机IP地址
[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.50.254 netmask 255.255.255.0 broadcast 192.168.50.255
inet6 fe80::4c10:2159:6a4:edce prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:7a:10:fe txqueuelen 1000 (Ethernet)
RX packets 1007 bytes 94760 (92.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 659 bytes 83864 (81.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
然后返回客户机 输入命令ssh cjf01@192.168.50.254 (yes/no)输入yes 到最后输入密码即可完成登录 返回exit登出即可
[root@localhost ~]# ssh cjf01@192.168.50.254
The authenticity of host '192.168.50.254 (192.168.50.254)' can't be established.
ECDSA key fingerprint is SHA256:j+z8eqXkR7Z+qDCk5mMNIygkI9DSjJ7KFIvwIxIdXbM.
ECDSA key fingerprint is MD5:dc:e6:30:2b:8f:b8:c7:e2:80:cf:84:39:2d:da:12:44.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.50.254' (ECDSA) to the list of known hosts.
root@192.168.50.254's password:
[cjf01@localhost ~]$
2. 不登录执行命令 :客户端使用jcjf02的用户身份不登录到服务器,执行查看服务器网卡配置文件的内容
首先在服务机创建cjf02用户并设置密码
[root@localhost ~]# useradd cjf02
[root@localhost ~]# passwd cjf02
更改用户 cjf02 的密码 。
新的 密码:
无效的密码: 密码未通过字典检查 - 过于简单化/系统化
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
创建好之后 输入命令 ssh cjf02@192.168.50.254 vim /etc/syscomfig/network-scripts/ifcfg-ens33 并执行 ssh cjf02@192.168.50.254后面直接跟上执行命令 就完成了
[cjf01@localhost ~]$ ssh cjf02@192.168.50.254 cat vim /etc/sysconfig/network-scripts/ifcfg-ens33
The authenticity of host '192.168.50.254 (192.168.50.254)' can't be established.
ECDSA key fingerprint is SHA256:j+z8eqXkR7Z+qDCk5mMNIygkI9DSjJ7KFIvwIxIdXbM.
ECDSA key fingerprint is MD5:dc:e6:30:2b:8f:b8:c7:e2:80:cf:84:39:2d:da:12:44.
Are you sure you want to continue connecting (yes/no)? yes
pts/ifcfg-ens33
cjf02@192.168.50.254's password:
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.50.254
NETMASK=255.255.255.0
GATEWAY=192.168.50.254
scp:基于ssh的远程复制命令
形式::本地<-->本地
本地<-->远程 : 远程路经在后
远程<-->本地 : 远程路径在前
远程<-->远程
本地--本地 案例:
将本地root下的0.txt 复制 本地的opt下:
命令scp /root/0.txt /opt
[root@localhost ~]# touch 0.txt
[root@localhost ~]# scp /root/0.txt /opt
[root@localhost ~]# ll
总用量 8
-rw-r--r--. 1 root root 0 5月 17 18:30 0.txt
drwxr-xr-x. 2 root root 6 5月 17 18:24 1.txt
-rw-------. 1 root root 1683 4月 24 17:26 anaconda-ks.cfg
-rw-r--r--. 1 root root 1731 4月 24 17:27 initial-setup-ks.cfg
drwxr-xr-x. 2 root root 6 4月 24 17:28 公共
drwxr-xr-x. 2 root root 6 4月 24 17:28 模板
drwxr-xr-x. 2 root root 6 4月 24 17:28 视频
drwxr-xr-x. 3 root root 24 4月 28 08:54 图片
drwxr-xr-x. 2 root root 6 4月 24 17:28 文档
drwxr-xr-x. 2 root root 6 4月 24 17:28 下载
drwxr-xr-x. 2 root root 6 4月 24 17:28 音乐
drwxr-xr-x. 2 root root 6 4月 28 08:56 桌面
[root@localhost ~]# cd /opt
[root@localhost opt]#
-rw-r--r--. 1 root root 0 5月 17 18:30 0.txt
本地--远程 案例:
将客户机root下的0.txt 移到 服务机的root用户下的/opt下
输入 scp /root/0.txt root@192.168.50.254:/opt
[root@localhost opt]# scp /root/0.txt root@192.168.50.254:/opt
root@192.168.50.254's password:
0.txt 100% 0 0.0KB/s 00:00
远程--本地 案例:
将客户机opt下的0.txt移到 客户机的root下
输入scp root@192.168.50.254:/opt/0.txt . “.”代表当前目录
[root@localhost opt]# scp root@192.168.50.254:/opt/0.txt .
root@192.168.50.254's password:
0.txt 100% 0 0.0KB/s 00:00
远程--远程:
准备三台虚拟机 把适配器自定义全都设置一个段 在进到虚拟机把三台虚拟机网卡网段设置成一样的
完成以上步骤即可用一台客户机控制两台
案例:用客户机把192.168.50.50服务器上的0.txt移到192.168.50.60服务器上
命令:scp root@192.168.50.50:/0.txt root@192.168.50.60:/root
sftp: 安全的文件传输程序
sftp后面输入服务机IP即可从对方获取文件或者上传文件
命令前可加“L”加L代表命令客户机 不加L代表命令服务机
put:上传
get:获取
get获取
[root@localhost opt]# sftp 192.168.50.254
root@192.168.50.254's password:
Connected to 192.168.50.254.
sftp>
sftp> get 2.txt
Fetching /root/2.txt to 2.txt
sftp> exit
[root@localhost opt]# ll
总用量 0
-rw-r--r--. 1 root root 0 5月 17 18:50 0.txt
-rw-r--r--. 1 root root 0 5月 17 18:57 2.txt
put上传
sftp> put 0.txt
Uploading 0.txt to /root/0.txt
0.txt 100% 0 0.0KB/s 00:00
密钥对验证:提供面交互的密码验证
ssh-keygen 客户端生成密钥对(私钥)
ssh-copy-id【服务机id】 客户机将公钥上传至服务器
简单来说完成这些步骤再次远程连接服务器就可以不要密码
输入ssh-keygen 创建密钥 然后回车直到最后一步
[root@localhost ~]# ssh-keygen
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:Qe4jJU+XXu09rPYCD2m6o4WrO24YNQWMWtN0Ey40b0E root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
| ==oEo |
| +.o=+o . . |
| o ..o+= o . . |
| . oo* + . ... |
| . o S . . .o.|
| . ... = . .|
| o . .o +o |
| . o oo .o. |
| o++o..o .. |
+----[SHA256]-----+
[root@localhost ~]#
去到服务机可以看到生成 .ssh虚拟文件
[root@localhost ~]# ls -la
drwx------. 2 root root 80 5月 17 15:44 .ssh
再次输入ssh-copy-id(192.168.50.254)点击回车 会提示输入密码 然后继续回车就完成了
[root@localhost ~]# ssh-copy-id 192.168.50.254
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.50.254's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '192.168.50.254'"
and check to make sure that only the key(s) you wanted were added.
[root@localhost ~]#