############sshd简介############
ssh 是客户端
sshd 应该是服务器端的
sshd=secure shell
可以通过网络在主机中开机shell的服务
实验环境的搭建
查询真机ip:ip addr show br0
查询虚拟机ip:ip addr show eth0
第一步:查询真机ip,在真机的shell中输入命令:ip addr show br0
ip为:172.25.254.31
第二步:打开虚拟机,并在虚拟机的shell中输入命令:nm-connection-editor,会弹出以下弹框,并删除“system eth0选项。
第三步:点击“Add"添加新的选框,在“Connection name "里面输入“westos”,在MAC选择“52:54:00:33:B1:A4(eth0)"这个选项。
第四步:在"IPv4 Settings"选项下的“Addresses"选项中添加内容:
第五步:在虚拟机的shell中输入命令:ip addr show eth0,显示虚拟机的ip 为172.25.15.131,并在真机的shell中输入命令:ping 172.25.25.0.131,则表示通过网络给真机跟虚拟机“搭桥”,能够实现远程控制。
第六步:在两台主机的shell中分别删除 /root/.ssh/(删除这个目录rm -rf /root/.ssh 或者删除这个目录下的文件rm -rf /root/.ssh/*均可以)
为什么要删除/root/.ssh/? 客户端主机第一次连接服务端主机会在这个目录下生成known_hosts这个文件,为了验证这个实验效果,所以先将这个目录清空或者直接删除这个隐藏目录 直接在家目录下面输入ls -a(查看所有文件,包括非隐藏文件和隐藏文件) 或者l.(只查看隐藏文件)
更改主机名字
hostnamectl set-hostname client. com
hostnamectl set-hostname server. com
客户端软件
sshd
连接方式
ssh username@ip ##文本模式的链接
ssh -X username@ip ##可以在链接成功后开机图形
在客户端主机中查看/root/.ssh/下的文件
cd /root/.ssh/ 切换到该目录下
ls 查看该目录下的文件,出现known_hosts文件
cat known_hosts 查看该文件的内容 会显示server主机的信息
在客户端主机中输入 rm -rf known_hosts, 删除该文件
再次重新连接 ssh root@172.25.254.231 就会出现yes或者no
注意:
1.第一次链接陌生主机时是要建立认证文件的,所以会询问是否建立,需要输入yes,再次链接此台主机时,因为已经生成~/.ssh/know_hosts文件,所以不需要再次输入yes
1.生成认证KEY
[root@server ~]# ssh-keygen ##生成密钥的命令
[root@server ~]# cd /root/.ssh/ ##切换到ssh里
[root@server .ssh]# ls ##查看ssh里的密钥是否生成
authorizeed_keys id_rsa(钥匙) id_rsa.pub(锁)
[root@server .ssh]# ssh-copy-id -i id_rsa.pub root@172.25.254.231 ##让系统读取加密文件有"added"出现,则表示密钥设置成功
[root@server .ssh]# ls ##查看ssh里的密钥是否出现
authorized_keys id_rsa id_rsa.pub known_hosts
^
此文件出现表示加密完成
分发钥匙
[root@server .ssh]# scp /root/.ssh/id_rsa root@172.25.254.131:/root/.ssh/ ##钥匙发给客户端
客户端
客户端/root/.ssh/的这个文件(目录)必须存在 ,相当于上传
注意:如果客户端没有/root/.ssh/这个文件,客户端使用密码方式重新连接一次服务端,会生成该文件,然后可以将锁传给客户端了
测试
在客户端主机中(172.25.254.131)
ssh root@172.25.254.231 ##连接发现直接登陆不需要root登陆系统的密码
注意:以上操作步骤是把私钥(id_rsa)给了root用户,所以root用户可以直接进入,不需要输入密码,当以普通用户的身份想进入虚拟机,还是要输入密码。 ##将私钥给哪个用户,哪个用户进入是不需要密码的。
###########sshd安全的设定#############
setenforce是Linux的selinux防火墙配置命令
setenforce 0 ##关闭selinux防火墙
getenforce ##查看selinux的状态
若不想让有密码的用户进入服务器(虚拟机),则编辑文件夹
vim /etc/ssh/sshd_config
78 PasswordAuthentication yes|no ##是否允许用户通过登录系统的密码做sshd的认证
48 PermitRootLogin yes|no ##是否允许root用户通过sshd服务的认证
52 Allowusers student westos ##设定用户白名单,白名单出现默认不在名单中的用户不能使用sshd
53 Denyusers westos ##设定用户黑名单,黑名单出现默认在名单里的用户不能使用sshd
让有私钥的用户也进不去,在目录/root/ssh/.ssh/中删除文件authorized_keys即可
若想再让有私钥的用户进入,重新装上密钥authorized_keys,就可以了
注意:
1,每个命令设置完成后,必须使用命令“systemctl restart sshd.service" 重新启动服务后才能用真机或者另一个虚拟机(客户端)去验证。
2,在用命令“vim”编辑文件时,在文件的每一行前加上”#“符号,表示命令没有被启用。
###########添加sshd登陆信息###########
vim /etc/motd ##文件内容就是登陆后显示的信息
###########用户的登陆审计#############
1.w ##查看正在使用当前系统的用户
-f ##查看使用来源
-i ##显示IP
/var/run/utmp ## 查看使用过并退出的用户的信息
2.last
/var/log/wtmp ##查看使用过并退出的用户信息
3.lastb
/var/log/btmp ##试图登陆但没成功的用户