一.sshd简介
sshd= secure shell
可以通过网络在主机中开机shell的服务
客户端软件
1.连接方式:
ssh username@ip ##文本模式的连接
ssh -X username@ip ##可以在连接成功后开机图形
注意:
第一次连接陌生主机时需要建立认证文件
所以会询问是否建立,需要输入yes,退出时 Ctrl + d/exit。
再次连接此台主机时,因为已经生成~/.ssh/know_hosts文件所以不需要再次输入yes
2.远程复制
scp file root@ip:dir ##上传
scp root@ip:file dir ##下载
效果演示
为了创造演示环境,现在有一台真机上安装有两台虚拟机:desktop和server
分别设置desktop(客户端)和server(服务端)的ip
desktop(客户端):172.25.254.144
server(服务端):172.25.254.244
使用nm-connection-editor图形界面
选择Add添加
选择默认的Ethernet,然后Create…
Connection name : eth0
Device选择eth0
IPv4 Settings选项卡下Method选择Manual
Add->Address:172.25.254.144
Netmask:24
点Save保存即可
可以使用ifconfig eth0命令确认是否生效。
然后删除/root/.ssh文件夹以创造原始纯净的的环境
rm -fr /root/.ssh/
为了区别客户端与服务端,我们可以将其命名
hostnamectl set-hostname client_ssh.lilong.com
重开shell后可见新的主机名
同时通过,Edit>Profile Preferences>Colors选项更换颜色更直观区别。
server(服务器)的设置方法同客户端一致,ip为172.25.254.244,设置主机名为server_ssh.lilong.com
两台主机设置完成后,我们可以在其中一台主机使用ping命令来检测他们是否通畅
此处使用客户端client检测
ping 172.25.254.244
可见此时网络是通的,按下Ctrl + C退出检测
现在可以使用ssh命令连接远程主机了
ssh root@172.25.254.244
第一次登陆输入yes后输入所登陆远程用户的密码即可登陆成功,行首[root@server_ssh ~]表示此时登陆了远程主机的root用户。
==若此处使用ssh -X root@172.25.254.244登陆,则可以在登陆后调用图形界面 ==
现在我们尝试将客户端桌面上名为long的文件上传到服务器的桌面
首先建立文件
touch long
上传文件
scp long root@172.25.254.244:/root/Desktop/
输入服务端root用户密码,传输完成
客户端的桌面上可以看到刚才上传的文件
在服务器中,是可以通过设置白名单与黑名单来限制指定IP连接的,修改下面两个文件即可
黑名单
etc/hosts.deny
白名单
etc/hosts.allow
黑名单表示拒绝所添加用户的远程连接,如要拒绝来自172.25.254.144的连接请求,其他ip可以正常连接,则可以编辑黑名单
vim etc/hosts.deny
保存退出后重启sshd服务即可生效
现在尝试使用客户端连接服务器发现连接失败
白名单的原理一样,但是作用相反,他只允许名单里的用户连接,而拒绝其他所有用户通过sshd服务连接。
二.sshd的key认证
通过上面的黑名单/白名单的方式虽然可以拒绝指定ip通过sshd连接,但是ip是可以自己更改的,这样做是不安全的,所以我们用sshd的key认证来加密服务器达到安全的目的。
原理是生成密钥,服务器使用该密钥加密,只有拥有该密钥的主机才能连接服务器。
第一步 生成密钥
首先为了还原原始纯净的环境,我们先删除/root/.ssh/下的所有文件
rm -fr /root/.ssh
生成密钥
ssh-keygen
此命令过程中会要求我们输入密钥文件名和密码,直接回车默认跳过即可,下面的命令则直接包含这两个过程
ssh-keygen -f /root/.ssh/id_rsa -N “”
效果相同
第三步 加密服务器
shh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.254.244
yes确定后输入服务器用户密码即可加密成功
第四步 取消默认认证方式(即密码认证)
vim /etc/ssh/sshd_config
将该文件78行PasswordAuthentication后的yes改为no即为关闭默认认证方式。
保存退出
然后重新加载sshd服务
systemctl reload sshd
到此,服务器已经加密且关闭了sshd密码认证,只有拥有密钥的主机才可以连接
第五步 给客户端发送密钥
给允许连接的主机发送密钥
scp /root/.ssh/id_rsa root@172.25.254.144:/root/.ssh/
这时在客户端的/root/.ssh/目录下可以看到密钥
此时连接服务器
ssh root@172.25.254.244
输入yes确认后即可直接连接上server并且无需输入密码
三.sshd的安全设定
通过设置/etc/ssh/sshd_config文件中的内容来更改sshd的安全设定
设定内容 | 设定效果 |
---|---|
78行 PasswordAuthentication yes/no | 是否允许用户通过系登陆的密码做sshd的认证 |
48行 PermitRootLogin yes/no | 是否允许root用户通过sshd服务的认证 |
52行 Allowusers student westos | 设定白名单,白名单出现默认不在名单中的用户不能使用sshd |
53行 Denyusers westos | 设定黑名单,黑名单出现默认不在名单中的用户可以使用sshd |
四. 添加sshd登陆信息
服务器中修改/etc/motd此文件中显示的内容就是登陆后显示的信息
vim /etc/motd
保存退出后客户端登陆后可看到该信息
五.用户的登陆审计
命令 | 参数 | 注释 |
---|---|---|
w | 查看正在使用当前系统的用户 | |
w | -f | 查看使用来源 |
w | -i | 显示IP |
last ##查看使用过并退出的用户信息
lastb ##试图登陆但没成功的用户