Linux 基础学习篇9(网络服务ssh篇)
(一)openssh-server
1.openssh-server
服务(系统或网络):常驻在内存中的进程。
daemon(守护神):实现服务的程序。举例:实现循环型工作调度服务的程序(daemon)为crond。有时,daemon与service不需要分太清。
2.客户端连接方式
ssh 远程主机用户@远程主机ip
[[email protected] ~]# ssh [email protected]
The authenticity of host '172.25.0.11 (172.25.0.11)' can't be established.
ECDSA key fingerprint is eb:24:0e:07:96:26:b1:04:c2:37:0c:78:2d:bc:b0:08.
Are you sure you want to continue connecting (yes/no)? yes ##连接陌生主机时需要建立认证关系
Warning: Permanently added '172.25.0.11' (ECDSA) to the list of known hosts.
[email protected]'s password: ##远程用户密码
Last login: Mon Oct 3 03:13:47 2016
[[email protected] ~]# ##登陆成功
实验1:
实验1前的准备:因为要同时开启两台虚拟机,系统会变慢,所以要改两台虚拟机内存才可以。
修改如下:
修改内存(客户端同理):
@为了便于识别两个虚拟机,现将两台虚拟机中行提示符里面的主机名进行修改。desktop虚拟机主机名设置为client,server虚拟机主机名设置为server。(脑海中一定要有客户端服务端模型)
@在两台虚拟机上均执行删除/root/.ssh/命令(为下面生成公钥私钥做准备的一步)
@在两台虚拟机上均执行修改ip即nm-connection-editor命令(client:172.25.44.10.server:172.25.44.11)
@尝试连接(客户端连接服务端)
ssh 远程主机用户@远程主机ip -X ##调用远程主机图形工具
实验2:
ssh 远程主机用户@远程主机ip command ##直接在远程主机运行某条命令
实验3:
3.sshkey加密:
(1)生成公钥私钥
[[email protected] ~]# ssh-****** ##生成公钥私钥工具
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):[enter] ##加密字符保存文件(建议用默认)
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): [enter] ##**密码,必须>4个字符
Enter same passphrase again: [enter] ##确认密码
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
ab:3c:73:2e:c8:0b:75:c8:39:3a:46:a2:22:34:84:81 [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
|o |
|E. |
|.. |
|. . o |
|.o. * . S |
|oo.o o . |
|+ =. . . |
|o. oo.+.. |
| ..o*. |
+-----------------+
[[email protected] ~]# ls /root/.ssh/
id_rsa id_rsa.pub
id_rsa ##私钥,就是钥匙
id_rsa.pub ##公钥,就是锁
实验4:
我们在服务端设置公钥,私钥。
设置完成后接下来我们可以看看文件到底生成否:
(2)添加key认证方式
[[email protected] ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
ssh-copy-id ##添加key认证方式的工具
-i ##指定加密key文件
/root/.ssh/id_rsa.pub ##加密key
root ##加密用户为root
172.25.0.11 ##被加密主机ip
实验5:
当我们添加完key认证方式后,被加密的主机用户对应文件夹会多两个文件,我们查看下:
(3)分发钥匙给client主机
[[email protected] ~]# scp /root/.ssh/id_rsa [email protected]:/root/.ssh/
服务主机给客户主机分发钥匙后,在客户主机上的/root/.ssh/目录下就会多出两个文件(为了实验效果,前面已经删除掉该目录下的所有文件及目录),如下图所示:
此时,因为客户端有钥匙(服务端给的钥匙文件),所以可以不用输入密码即可连接!
4。提升openssh的安全级别
(1)openssh-server配置文件
/etc/ssh/sshd_config
78 PasswordAuthentication yes|no ##是否开启用户密码认 证,yes为支持no为关闭
48 PermitRootLogin yes|no ##是否允许超级用户登陆
实验6:
实验前提:进行该实验之前先把客户端主机上的钥匙文件删掉。
出现的问题:第一次删除id rsa文件,没删掉。
解决:你得先进入相应文件夹,不能在主文件夹下删除。
(1)在服务端 vim进入/etc/ssh/sshd_config
设置是否开启用户密码认证,yes为支持no为关闭,此时设置为no,如下:
(2)此时在客户主机连接服务主机,观察是否可以密码连接:
实验失败!
原因及解决:sshd.service是服务,记得每次修改完配置文件都要重启服务!如下所示:
试验成功!客户主机连接服务主机就需要输入密码,结果发现无法连接:
(做完测试记得把钥匙文件再发送给客户主机,以便下次实验进行)。
49 AllowUsers student westos ##用户白名单,只有在名单中出现的用户可以使用sshd建立shell
50 DenyUsers westos ##用户黑名单
注意:在服务端设置用户黑白名单时,意思是客户端不可以/可以访问服务器端的对应名单用户!
实验7:
当设置黑名单后,客户端无法访问服务端的student用户:
(2)控制ssh客户端访问
vim /etc/hosts.deny
@ sshd:ALL ##拒绝所有人链接sshd服务
vim /etc/hosts.allow
@ sshd:172.25.254.250 ##允许250主机链接sshd
@ sshd:172.25.254.250, 172.25.254.180 ##允许250和180链接
@ sshd:ALL EXCEPT 172.25.254.200 ##只不允许200链接sshd
(3)ssh登陆提示修改
vim /etc/motd ##显示登陆后字符
hello world ##在登陆后就会显示这个字符
改完配置文件后,运行结果如下:
##end##