一、主机名称的修改
在本次操作中,需要用到两台虚拟机,其中一台作为客户端,一台作为服务端,所以首先我们要修改虚拟机的名称便于后面的操作。
具体修改方式:在shell中执行hostnamectl set-hostname xxx.example.com。如下图
完成操作后要重新打开一个新shell,即刻生效
上图为服务端,为了方便区分,我将客户端更改了颜色,操作一样,如下图:
二、网络的配置
1.实验操作需要用到ip地址,因此我将两台虚拟机的ip地址进行了修改,方便记忆,便于后面的操作。
首先查看了真机的ip地址,如下图:
可以看到真机的ip为172.25.254.77,因此我准备将两台虚拟机的ip设为172.25.254.7和172.25.254.177,操作如下:
首先输入nm-connection-editor
删除原来的配置文件,在选择add自己创建自己想要的ip
选择自己的网卡
在设置ipv4,在Method下选择Manual在Add输入自己想要的ip地址,网络掩码设为24,网关部分空格一下即可,完成后save保存如下图:
这样ip地址就改成自己想要的了,我们查看一下:
同理,将服务端的ip也改了:
三、客户端的链接
1.让远程主机可以通过网络访问sshd服务,开始一个安全shell,在客户端打开
实现方法:ssh 远程主机用户@远程主机ip(也就是我这里的服务端的用户和ip),如下图:
上图输入yes一行表示连接陌生主机时需要建立认证关系;第二行输入服务端密码;完成后登陆成功。
怎么证明我已经在客户端打开的是服务端的shell方法很多,我这里查询了自己当前的ip证明了我已经在服务端,如下图
但是这种登陆方式只能在服务端进行文本操作,不能打开图形,如下图:
要想打开图形只需在命令后加入 -X 即可:
还有一种方法也可以实现,直接在-X后加你想要的图形操作:
四、sshkey加密
上面的操作很方便,但是有时候我们不想让别人直接登陆我们,我们只想让指定的人登陆,这时候就要用到sshkey加密。
加密三步走
第一步:生成公钥和私钥,命令ssh-keygen:
上图过程中第一个冒号:加密字符保存文件(建议用默认,按回车键即可)
第二个冒号:密钥密码,应该大于四位(也可以为空,按回车即可)
第三个冒号:再次确认密钥密码。
然后开始第二步:添加key认证方式,命令ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.254.7
上述命令:ssh-copy-id是添加key认证方式的工具
-i 是指定加密key文件,后接/root/.ssh/id_rsa.pub加密key
root是加密用户
172.25.254.7是被加密主机ip(也就是服务端ip) 如下图:
添加认证方式后会在目录中产生认证文件。但是此时若不将原来的密码登录方式关掉的话,该加密方式不生效,登陆密码还是能直接登陆:
所以我们要关闭密码登录方式:vim编辑/etc/ssh/sshd_config中第78行,将yes改为no,wq退出保存,即关闭ssh密码登录方式:(记得重新加载sshd服务才能生效)
此时没有分发私钥的用户无法通过ssh远程连接:变成如下图模式:
接下来进行第三步:发送私钥到客户端
scp /root/.ssh/id_rsa root@172.25.254.177(发给客户端所以填客户端ip):/root/.ssh/ 如下图:
分发成功后该用户ssh连接时不需要输入密码
五、黑白名单的设置
1.vim编辑/etc/ssh/sshd_config,第48行PermitRootLogin yes 将yes改成no所有人都没有权限登陆我的ROOT
2.黑名单的设置:除了黑名单的用户,其他用户都可以用ssh连接我(服务端)
同样vim编辑/etc/ssh/sshd_config,在PermitRootLogin yes下命令Denyusers+用户,我将root用户加入黑名单:(wq退出保存后记得重新加载sshd服务命令才会生效)
此时root用用户将连接不到服务端,将一直提示再次输入密码:
白名单的设置:当服务端设置了白名单将只有白名单上的用户可以登录。
同样vim编辑/etc/ssh/sshd_config,命令为Allowusers+允许用户,同样我将root用户加入白名单:(wq退出保存后记得重新加载sshd服务)
可以看出此时我切换到student用户因为不在白名单内,所以也出现了相同情况,会一直提示你输入密码登录:
六、文件传输
1、scp命令
1)将文件从服务端拷贝给客户端,服务端输入命令:scp 文件所在路径 (客户端用户)root@客户端ip:客户端存放路径,如下图
2)用户在客户端从服务端获取文件,命令:scp(如果要获取目录这里接-r) root@服务端ip:文件在服务端的路径 获取到客户端的存放路径,如下图
2、rsync(复印)命令,用法与scp(手抄)类似,速度快
-r 复制目录
-l 不忽略文件里的链接
-p 不忽略权限
-t 不忽略时间戳
-g 不忽略用户
-o 不忽略组
-D 不忽略块设备