1.什么是sshd服务?客户端主机通过网络在服务端主机中开启服务端主机shell的服务客户端通过网络连接服务端,并且控制服务端,也就是客户端开了服务端的shell2.实验环境搭建1>在真机中打开虚拟机desktop,server(在为了实验环境的干净,先要reset一下两台虚拟机)2>配置两台主机的Ip3>在两台主机的shell中分别删除 /root/.ssh/(删除这个目录rm -rf /root/.ssh 或者删除这个目录下的文件rm -rf /root/.ssh/*均可以)备注:客户端主机第一次连接服务端主机会在这个目录下生成known_hosts这个文件,为了验证这个实验效果,所以先将这个目录清空或者直接删除这个隐藏目录直接在家目录下面输入ls -a(查看所有文件,包括非隐藏文件和隐藏文件) 或者l.(只查看隐藏文件)4>修改两个主机名字在客户端主机输入 hostnamectl set-hostname client.hhh.com(desktop主机)在服务端主机输入 hostnamectl set-hostname server.uuu.com(server主机)3.sshd的相关内容(客户端连接服务端主机)1>文本模式下连接客户端可以启用服务端的文本模式功能一台主机可以和另外一台主机连接起来,并且可以操作对方的文本模式1:如果是客户端连接服务端,则客户端可以操作服务端的文本模式如果是服务端连接客户端,则服务端可以操作客户端的文本模式 格式: ssh username@Ip 在连接时需要输入所连主机的密码注意:第一次连接陌生主机的时候需要建立认证文(~/.ssh/know_hosts文件),所以会询问是否建立,输入yes即可.再次连接次台主机的时候,由于已经生成~/.ssh/know_hosts文件,因此不需要再次输入yes.模式2:(默认上面这样打开的是文本模式,如果想要打开图形编辑模式)格式:ssh -X username@ip4.远程复制
注:文件路径均采用绝对路径1.将一台主机上的文件复制到另外一台主机上格式:scp file root@ip:dir2.将远程文件下载下来格式:scp username@ip:file dir下载rsysnc进行传输:
scp与rscp的区别scp是相当于复制,黏贴,如果有的话是覆盖,比较耗时间,不智能。rsync是复制,如果有重复的文件,会直接跳过,而且他自己的算法优化。scp是把文件全部复制过去,当文件修改后还是把所有文件复制过去,rsync 第一次是把所有文件同步过去,当文件修改后,只把修改的文件同步过去。
5.sshd服务的免密操作1.原因:如果客户端知道服务端主机的ip地址和密码,就可以远程操控服务端, 如果任意一个客户端知道服务端主机的ip地址和密码,并且知道它里面的重要文件存放路径,那么就可以拷贝服务端的文件,这样的操作在实际企业当中非常不安全2.采用钥匙和锁子key1:在服务端输入:ssh-keygen ,生成钥匙和密码 , id_rsa是钥匙 id_rsa.pub是锁在服务端输入 ssh-keygen 三次回车 ,每次回车都有原因:1>第一次回车是钥匙和密码存放路径(可以直接回车,存放在默认路径下)2>第二次回车是密码(可以直接回车,不设置密码)3>第三次回车也是密码(可以直接回车,不设置密码)也可以不用回车,设置参数:key2:在服务端输入:ssh-copy -id -i /root/.ssh/id_rsa.pub username@ip 先给自己上锁,也就是给服务端上锁key3:在服务端输入:scp /root/.ssh/id_rsa username@ip:/root/.ssh/ 将密码传给客户端客户端/root/.ssh/的这个文件(目录)必须存在 ,相当于上传注意:如果客户端没有:/root/.ssh/这个文件,客户端使用密码方式重新连接一次server,会重新生成该文件key4:验证客户端是否可以进行免密连接server6.sshd的安全设定?1.原因:因为server的root权限太大,客户端如果使用server的root权限极不安全,为了保证ssh服务器的安全性:server开放的权限不能太多,一般不太让客户端主机用server主机的超级用户root2.常用安全规定1>/etc/ssh/sshd_config的第78行是否允许server的任意一个存在的用户通过登陆系统的密码做sshd的认证
2>/etc/ssh/sshd_config的第48行是否允许server的root用户通过sshd的服务
3>加入AllowUesrs student westos设定用户的白名单,此名单里面的用户可以做sshd服务 (文件里不存在 直接输入即可 多个用户用空格隔开)4>加入DenyUsers westos设定用户的黑名单,此名单注意:改完 之后需要 systemctl restart sshd.service
5>验证78行PasswordAuthentication yes|no是否允许server的任意一个存在的用户通过登陆系统的密码做sshd的认证(最初始的那种远程连接输入密码的方式),是否可以使别人在登陆时没有钥匙时试密码登陆 ,yes表示可以试密码和no表示不可以试密码, 注释相当于no6>验证48行的PermitRootLogin yes|no是否允许server的root用户通过sshd的服务(客户端是否能通过server的root用户远程连接server) 禁止超级用户登陆 ,限制超级用户使用root身份来登陆ssh,默认为yes注意:之前我们已经设置过超级用户可以免密连接因此做这个实验之前应该先取消root的免密操作在客户端和server均删除钥匙也就是 rm -rf /root/.ssh/*不允许的话会一直显示密码错误修改端口 :port num 修改端口7.添加sshd登录信息1>原因:为了使客户端在连接server的时候可以直观的看到服务端的相关信息,因此要添加信息,也就是使客户端登陆,server的时候显示server的一些信息2>方法:1.在server的 /etc/motd 文件里面设置服务端自己的一些信息2.vim /etc/motd 文件内容就是登录后显示的信息8.用户的登录审计补充: /var/log/wtmp,/var/log/btmp,:该文件存放的是last查出来的信息,但是该文件不能用cat查看,可以用放file查看