1.sshd简介
当主机中开启openssh服务,那么就对外开放了远程连接的接口 openssh服务的服务端,开元的远程连接
sshd= secure shell # 服务端软件,对外开放一个接口,让别人通过其他途径连接可以通过网络在主机中开机shell的服务
ssh # 客户端软件
(1)连接方式:
ssh [email protected] # 文本模式的连接
ssh -X [email protected] # 可以在连接成功后开机图形
注意:第一次链接陌生主机是要建立认证文件,所以会询问是否建立,需要输入yes,再次链接此台
主机时,因为已经生成~/.ssh/know_hosts文件所以不需要再次输入yes
(2)远程复制:
scp file [email protected]:dir # 上传
scp [email protected]:file dir # 下载
2.sshd 的key认证
# 在服务端
(1)生成认证KEY
a.命令的方式生成**
[[email protected] ~]# ssh-****** # 生成**,生成**时,均选用默认值
b.用一条命令生成**
[[email protected] ~]# rm -fr /root/.ssh/id_rsa # 先要删除之前生成的**
[[email protected] ~]# ssh-****** -t rsa -f /root/.ssh/id_rsa -P ""
-t # type,即锁的类型
-f # 生成所的位置以及文件名称
-P # 密码
c.用脚本文件生成**
[[email protected] ~]# rm -fr /root/.ssh/id_rsa #先要删除之前生成的**
[[email protected] ~]# vim create_keys.sh
# 如果不删除的话就会出现以下现象
(2)加密服务
[[email protected] ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected] # 加密
-id # 加密命令
-i # 指定**, 即加密的文件
/root/.ssh/id_rsa.pub # 公钥,就是锁
/root/.ssh/id_rsa # 私钥,就是钥匙
root # 加密用户
172.25.254.138 # 主机ip
[[email protected] ~]# ls /root/.ssh/ # authorized_keys文件出现表示加密成功
authorized_keys id_rsa id_rsa.pub known_hosts
(3)分发钥匙,把**传给客户端
[[email protected] ~]# scp /root/.ssh/id_rsa [email protected]:/root/.ssh/
(4)测试
# 在客户端
[[email protected] ~]# ssh [email protected] # 连接服务端时不需要输入密码
Last login: Thu Oct 4 11:10:06 2018 from 172.25.254.78
[[email protected] ~]#
# 在客户端删除钥匙,不能免密连接
[[email protected] ~]# rm -fr /root/.ssh/id_rsa
[[email protected] ~]# ssh [email protected]@172.25.254.138's
password:
解决方案:重新再传一份钥匙即可
# 在服务端删除加密文件,客户端也不能连接
[[email protected] ~]# rm -fr /root/.ssh/authorized_keys
[[email protected] ~]# ssh [email protected] # 在客户端连接测试
password: # 不能免密
解决方案:
[[email protected] ~]# cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
# 服务端加密文件删除之后,客户端还可以通过密码连接,修改配置文件之后,就没有连接的权限
[[email protected] ~]# rm -fr /root/.ssh/authorized_keys
[[email protected] ~]# vim /etc/ssh/sshd_config
78 PasswordAuthentication no
[[email protected] ~]# systemctl restart sshd.service
# 在客户端测试
[[email protected] ~]# ssh [email protected]
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
解决方案:把配置文件内容修改回来即可
3.sshd的安全设定(/etc/ssh/sshd_config)
78 PasswordAuthentication yes/no # 是否允许用户通过登陆系统的密码做sshd的认证
48 PermitRootLogin yes|no # 是否允许root用户通过sshd服务的认证
52 Allowusers student westos # 设定用户白名单,白名单出现默认不在名单中的用户不能使用sshd
53 Denyusers westos # 设定用户黑名单,黑名单出现默认不在名单中的用户可以使用sshd
注:白名单和黑名单只能出现一个
# 在服务端
[[email protected] ~]# vim /etc/ssh/sshd_config
48 PermitRootLogin no
[[email protected] ~]# systemctl restart sshd.service
#在客户端测试,服务端的root用户不能被连接
# 在服务端(设置白名单)
[[email protected] ~]# vim /etc/ssh/sshd_config # 设置白名单为student
52 Allowusers student
[[email protected] ~]# systemctl restart sshd.service
#在客户端测试,只有student用户可以被连接,其他用户不可以
[[email protected] ~]# ssh [email protected]
[[email protected] ~]# ssh [email protected]
# 在服务端(设置黑名单)
[[email protected] ~]# vim /etc/ssh/sshd_config
53 Denyusers student
[[email protected] ~]# systemctl restart sshd.service
#在客户端测试,只有student用户不可以被连接,其他用户都可以
[[email protected] ~]# ssh [email protected]
[[email protected] ~]# ssh [email protected]
4.添加sshd登陆登陆信息
# 在服务端设置登录信息
[[email protected] ~]# vim /etc/motd # 文件内容就是登陆后显示的信息
# 在客户端测试
[[email protected] ~]# ssh [email protected]
5.用户的登陆审计
(1)w # 查看正在使用当前系统的用户
-f # 查看使用来源
-i # 显示IP
/var/run/utmp # 记录着当前登录的用户,清空文件就不会用w查看到
[[email protected] ~]# > /var/run/utmp
[[email protected] ~]# w
22:37:57 up 1:30, 0 users, load average: 0.00, 0.01, 0.05
USER TTY [email protected] IDLE JCPU PCPU WHAT
(2)last # 查看使用过并退出的用户信息
/var/log/wtmp # 记录所有的登入和登出的用户,清空文件后,用last查看不到
[[email protected] ~]# > /var/log/wtmp
[[email protected] ~]# last
wtmp begins Fri Oct 12 22:39:23 2018
(3)lastb # 试图登陆但没成功的用户
/var/log/btmp # 记录错误的尝试登陆,清空文件后lastb就不会查到
[[email protected] ~]# > /var/log/btmp
[[email protected] ~]# lastb
btmp begins Fri Oct 12 22:39:02 2018
6.ssh的排错
加密完之后,私钥和公钥不能配合使用,是因为当前shell出了问题
解决方案:
1.关闭当前shell,重新打开一个shell
2.ssh-agent bash
3.ssh-add id_rsa # 把私钥添加到当前shell中
7.练习
题目:复制172.25.254.100上/mnt目录下的ip_rsa文件,使得这台主机连接我的student用户是免密连接
[[email protected] ~]# scp [email protected]:/mnt/id_* /root/.ssh
[[email protected] ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
测试:(用172.25.254.100这台主机连接我的student用户)如果是免密,则成功