(1)sshd:客户端主机通过网络在服务端主机中开启服务端主机shell的服务;客户端通过网络连接服务端,并且控制服务端,也就是客户端开启了服务端的shell;提供shell服务;
(2)ssh (安全外壳协议)
SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。
SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。
几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。
①ssh 是客户端;sshd 是服务器端的
②ssh_config和sshd_config都是ssh服务器的配置文件,二者区别在于,前者是针对客户端的配置文件,后者则是针对服务端的配置文件。
③两个配置文件都允许你通过设置不同的选项来改变客户端程序的运行方式。
④ssh-agent 是一种控制用来保存公钥身份验证所使用的私钥的程序。
只要你知道自己的账号和口令,就可以登录到远程主机。但会出现“中间人攻击”
[student@host~]$ ssh remoteuser@remotehost
[student@host~]$ ssh remoteuser@remotehost hostname
命令 | 注释 |
---|---|
ip addr show br0 | ## 查看真机ip信息 |
ip addr show eth0 | ##查看虚拟机ip信息 |
nm-connection-editor | ##打开Network Connections,新建网络连接,注意:((主机号<50)server主机号+100;client+200) |
ping 真机ip | ##打开Network Connections,新建网络连接 ,有传输速率,则成功 |
hostnamectl set-hostname XXX | ##修改主机名 |
rm -rf /root/.ssh | ##网络ping完以后,需要删除/root/.ssh |
步骤(1)查看主机信息;确定虚拟机ip信息;
(2)删除原先的配置,添加新的ip配置,并验证;
实验一:真机对虚拟机进行操作
(1)真机首先切换到虚拟机模式; ssh username@虚拟机ip
(2)然后就可以在真机下对虚拟机进行操作:
命令 | 注释 |
---|---|
scp 源文件的虚拟机路径 root@真机ip路径 | ##将虚拟机的文件复制到真机 |
scp -r 源文件的虚拟机路径 root@真机ip路径 | ##将虚拟机的目录复制到真机 |
(1)通过命令: hostnamectl set-hostname westosclient.com ##对于desktop进行改名,注意再次打开terminal,方可生效;server类似;
(2)配置虚拟机网络和环境一相同;结果如下:
注意:删除/root/.ssh 配置文件;
(3)通过命令:ssh username@虚拟机ip ###实现两个虚拟机的切换;
连接方式 | 注释 |
---|---|
ssh username@ip>>>command | ##切换虚拟机,进行文本操作 |
ssh -X username@ip >>>command | ##切换虚拟机,进行图形操作 |
ssh username@ip command | ##不切换虚拟机,进行操作 |
第一次连接陌生主机时需要建立认证文件,会询问是否需要建立,需要则输入(yes);
在此连接此台主机时,因为已经生成~/.ssh/know_hosts文件,所有不需要再次输入(yes)。
result1:“纯文本实现虚拟机的远程操作”*
切换到服务器的ip,通过命令(如firefox)进行纯文本操作;
result2 切换到服务器的ip,通过命令进行图形操作;
| ssh root@ip -X >>>command | ##切换虚拟机,进行图形操作|
result3不切换到服务器的ip,通过命令操作;
| ssh root@ip command | ##不切换虚拟机,进行操作 |
错误 | 命令 | 注释 |
---|---|---|
1.网络是否配置正确 | (server) ifconfig eth0 | ## #查看当前网络 |
(server) ping 172.25.254.32 | ##和真机网络区域是否一致 | |
(server) ping 172.25.254.132 | #当前网络是否配置正确 | |
(server) ping 172.25.254.232 | #在server查看desktop是否连通 | |
(desktop) ping 172.25.254.32 | ##和真机网络区域是否一致 | |
(desktop) ping 172.25.254.232 | #当前网络是否配置正确 | |
(desktop) ping 172.25.254.132 | ##在desktopr查看server是否连通 | |
2.网络连接硬件的错误 | ①(真机)virt-manager | ##打开虚拟机管理 |
②( 虚拟机管理)打开对应的虚拟机(server/desktop) | ##在 虚拟机管理中进行操作; | |
③(真机)ifconfig eth0 | ##查看对应的网口(04:0b); | |
④( 虚拟机管理)ifconfig eth0 | ##查看对应的网口(04:0b); | |
⑤( 虚拟机管理)remove 出错的网口 | ##(04:0b); | |
⑥(Add new Virtual Hardware)点击NIC:21d5 | ##添加其他网口; | |
⑦(Add new Virtual Hardware)Network>>>Device model>>>virtl0>>>storge>>finish | ##修改配置并保存 |
硬件错误的排错result
密码验证机制
①为对称加密的形式,如果客户端知道服务端主机的ip地址和密码,就可以远程操控服务端。如果任意一个客户端知道服务端主机的ip地址和密码,并且知道它里面的重要文件存放路径那么就可以拷贝服务端的文件这样的操作在实际企业当中非常不安全。
②只要你知道帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。
密钥操作
①非对称加密,而且通过操作,服务器端可以控制客户端连接的时机。
②“中间人”这种攻击方式也是不可能的(因为他没有你的私人密匙)。
操作步骤 | 命令 | 注释 |
---|---|---|
1.(server)生成认证Key | ||
ssh-keygen | ##生成密钥 | |
Enter passphrase (empty for no passphrase): | # #点击空格键,指定保存加密字符的文件(使用默认) | |
Enter passphrase (empty for no passphrase): | # # 点击空格键(使用空密码) | |
Enter same passphrase again: | # # 点击空格键,确认密码 | |
The key’s randomart image is: | # 生成团,即为认证的Key | |
2.(server)加密服务 | ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected] | ##加密sshd服务; |
ls | #出现authorized_keys表示加密完成 | |
3.(server)分发钥匙 | scp /root/.ssh/id_rsa [email protected]:/root/.ssh/ | # 分发钥匙 |
4.测试(客户主机中)(172.25.254.232) | ssh [email protected] | # 连接时发现直接登录不需要root的密码认证,注意:authorized_keys则不能重新链接;保证了想让谁链接就让谁链接 |
在分发钥匙的时候出现问题: can’t find /root/.ssh/
原因:如果客户端没有/root/.ssh/这个文件,客户端使用密码方式重新连接一次服务端,会生成该文件,然后可以将锁传给客户端了。否则不能实现;
解决:客户端使用密码方式重新连接一次服务端,会生成该文件,并且退出。(上述操作步骤之前)
因为服务端的root权限太大,客户端如果使用服务端的root权限极不安全。为了保证ssh服务器的安全性:服务端开放的权限不能太多,一般不太让客户端主机用服务端主机的超级用户root。
注意:
(1)每次改完一个参数重启才会起作用:在服务端***systemctl restart sshd.service***
(2)验证完一个参数之后改回默认的;
功能 | 命令 | 注释 |
---|---|---|
1. 端口认证 | ||
1.1. 服务器端的配置 | setenforce 0 或者 systemctl stop firewalld(建议使用) | #关闭防火墙,最后的操作如果都正确的话,实现端口仍为22的时候需要关闭防火墙(注意出现: no root to host则是防火墙设置的问题) |
netstat -antlupe |grep sshd | #查看网络连接状态和sshd链接情况;-a 显示所有的socket,包括正在监听的;-n 用ip代替名称;-t 显示Tcp连接的情况; -l 显示链接的信息;-u 表示udp链接的情况;-p 程序名和pid; -e 以太网的统计 | |
vim /etc/ssh/sshd_config | #注意是sshd_config,在server下配置的 | |
(sshd_config17行)#port 22 改成 6666 | #修改默认port进行远程登录 | |
systemctl restart sshd | #修改完sshd配置文件必须要进行重启 | |
netstat -antlupe |grep sshd | #再次查看网络链接和sshd的链接情况 | |
1.2. 客户端的验证 | ssh [email protected] -p 6666 | #正确的端口认证方式 |
2. 代理地址的认证(20行) | ||
2.1服务器的配置 | vim /etc/ssh/sshd_config | ##打开配置文件 |
(20行空白处)ListenAddress 172.25.254.119 | ||
systemctl restart sshd | #修改完sshd配置文件必须要进行重启 | |
2.2验证(服务器) | # | |
3.超级用户的认证 | ||
3.1服务器的配置 | vim /etc/ssh/sshd_config | ##打开配置文件 |
(48行)#PermitRootLogin yes改为PermitRootLogin no | ##默认yes,限制超级用户使用root身份来登陆ssh;no表示禁止root登录 | |
systemctl restart sshd | #修改完sshd配置文件必须要进行重启 | |
3.2. 客户端的验证 | ssh [email protected] | #判断修改是否生效 |
4.黑名单的认证(即使密码正确也登录不了) | ||
4.1服务器的配置 | vim /etc/ssh/sshd_config | #打开配置文件 |
(空白处)DenyUsers tom jerry | # #配置白名单 | |
systemctl restart sshd | #修改完sshd配置文件必须要进行重启 | |
4.2客户端的验证 | # ssh 黑[email protected] | ##即使密码正确也登录不了 |
5.白名单的认证(设定用户的白名单,此名单里面的用户可以做sshd服务,多个用户用空格隔开) | ||
5.1服务器的配置 | useradd tom >>>passwd tom>>>useradd jerry >>>passwd jerry | # #先在服务端设置两个用户以及密码 |
vim /etc/ssh/sshd_config | # #打开配置文件 | |
(空白处)AllowUsers tom jerry | # #配置白名单 | |
systemctl restart sshd | #修改完sshd配置文件必须要进行重启 | |
5.2. 客户端的验证 | ssh [email protected] | #判断修改tom是否生效 |
ssh [email protected] | #判断修改jerry是否生效 | |
6.是否尝试密码认证 | ||
6.1(服务器配置) | vim /etc/ssh/sshd_config | ##打开配置文件 |
(78行的)PasswordAuthentication yes | no | |
systemctl restart sshd | #修改完sshd配置文件必须要进行重启 | |
6.2. 客户端的验证 | ssh [email protected] | #判断修改是否生效 |
Result1.端口认证(port)
Result2.代理地址的认证(ListenAddress)
Result3.超用户认证(root)
Result4.黑名单认证(DenyUsers)
Result5.白名单认证(AllowUsers)
Result6.密码认证(PasswordAuthentication)