1.sshd简介
ssh=secure shell,可以通过网络在主机中开启shell的服务。
连接方式:
ssh username@ip ##文本模式的连接
ssh -X username@ip ##可以在连接成功后打开图形
注意:
第一次连接陌生主机时要建立认证文件
会询问是否建立,需要输入yes
再次连接此主机时,因为已经生成~/.ssh/know_hosts
2.sshd的key认证
如果用户知道某主机的ip地址,又恰好知道了其用户密码,那就可以任意的登陆到这台主机上,这对于这台主机就十分不安全。可以考虑通过加入RSA密码认证,更安全一些。这就相当于,给该台主机上一个锁,而这把锁配备的钥匙由这台主机分发给允许登陆的用户,再关掉通过密码登陆的方式,那就保证了只有那些拥有开启这台主机锁的钥匙的用户才能登陆到这台主机。
1.步骤大致如下:
1)生成密钥(在哪生成都可以)----》生成之后会产生公钥(锁)、密钥(钥匙)两个文件
2)加密用户(相当于给这台主机上锁)----》加密之后会产生authorized_keys这个文件
3)分发钥匙
了解了基本步骤,下面介绍命令。
2.实验如下:
实验前的准备,开启两台ip地址不同的虚拟机,并保证相互之间能ping通。这里为了方便实验,设置一台主机名为client,另一台server,其中server提供sshd服务,client通过server开启并提供的sshd服务去连接server。
1)在server主机上,ssh-keygen生成钥匙 。(生成密钥在哪台主机都可以)
其中2-4行的解释如下:
Enter file in which to save the key (/root/.ssh/id_rsa):
指定保存加密字符的文件,默认名字是id_rsa 。也可自定义名字,但是需要改配置文件,所以这里直接enter过。
Enter passphrase (empty for no passphrase):
设定密码,不少于4位。如果不设定密码,直接enter过
Enter same passphrase again:
如果设定了密码,再次输入确认密码。
生成了密钥之后,在.ssh目录下会生成两个文件。id_rsa为密钥(钥匙),id_rsa.pub为公钥(锁)。
也可以ssh-keygen -f /root/.ssh/id_rsa -P “” 自动生成
2)加密server主机上的root用户。ssh-copy-id -i /root/.ssh/id_rsa.pub
加密要经过root用户的批准,所以需要root用户再输入一次密码。
如果在.ssh文件中生成了authorized_keys文件,则表示加密成功。
这里known_hosts文件是ssh登陆了其他主机生成的认证文件,与这次实验无关,有无均可。
3)把钥匙(id_rsa)分发给其他用户。这里我们分给client端(ip为172.25.254.107)的root用户,scp /root/.ssh/id_rsa root@172.25.254.107:/root/.ssh/
4)测试效果
client端的root用户实现了免密登陆server的root账号。
client端的root用户想要登陆server的student账号需要密码。
client端的student用户想要登陆server的root账号需要密码。
3.sshd的安全设定
不想让客户端使用sshd服务登陆主机了怎么办?一种情况是可以在server端rm -fr authorized_keys,另一种情况是使用安全设定。
可以看到,ssh服务的配置文件有两个。其中sshd_config是服务器端, ssh_config是客户端的。如果不了解配置文件中的参数 man 5 配置文件filename 关键字搜索参数
78行PasswordAuthentication yes 默认允许用户通过密码做sshd认证
我们可以设置为no
再测试一下效果,发现client端的student用户仍然可以通过密码ssh到server端的root用户。可是我们不是把密码认证设置了no吗?原因是我们还缺少一步。
在修改了服务的配置文件之后,一定要重启该服务。
此时再连接,发现密码认证已经关闭。
PermitRootLogin yes ##是否允许root用户通过sshd服务的认证
AllowUsers student potizo ##设定用户白名单,白名单出现,默认不在白名单中的用户不能使用sshd(中间用空格隔开)
DenyUsers zoe ##设定用户黑名单,黑名单出现,默认不在黑名单中的用户可以使用sshd
4.添加sshd登陆信息
vim /etc/motd ##文件内容就是登录后的信息显示
5.用户的登陆审计
w ##查看正在使用当前系统的用户
w -f ##查看使用来源
w -i ##显示IP
last ##查看使用过并退出的用户信息
lastb ##是图登录但没成功的用户