远程连接服务器
1、远程连接服务器简介 ssh secure shell
非对称加密:一对公钥私钥
对称加密:加密和解密使用的是同一把密钥;(同一秘钥既可以进行加密也可以进行解密 )优势:使用一个秘钥它的加密效率高一些(快一些) 缺陷:秘钥传输的安全性(在网络传输中不传输秘钥) 应用: 传输数据(数据的双向传输)公钥(public key):提供给远程主机进行数据加密的行为,所有人都可获得你的公钥来将数据加密。
私钥(private key):远程主机使用你的公钥加密的数据,在本地端就能够使用私钥来进行解密。私钥只有自己拥有。
2、连接加密技术简介
目前常见的网络数据包加密技术通常是通过“非对称密钥系统”来处理的。主要通过两把不一样的公钥与私钥来进行加密与解密的过程 。
密钥生成:
systemctl restart sshd
2.1.会话密钥生成
1.客户端需要使用适当的客户端程序来请求连接服务器,服务器将服务器的公钥发送给客户端。
2.服务器生成会话ID,并将会话ID发给客户端。
3.若客户端第一次连接到此服务器,则会将服务器的公钥数据记录到客户端的用户主目录内的~/.ssh/known_hosts。若是已经记录过该服务器的公钥数据,则客户端会去比对此次接收到的与之前的记录是否有差异。客户端生成会话密钥,并用服务器的公钥密后,发送给服务器。
4.服务器用自己的私钥将收到的数据解密,或的会话密钥
5.服务器和客户着都知道了会话密钥,以后的传输都将被会话密钥加密。
2.2.SSH工作过程
在整个通讯过程中,为实现SSH的安全连接,服务端与客户端要经历如下五个阶段:版本号协商阶段、密钥和算法协商阶段、认证阶段、会话请求阶段、交互会话阶段。
3、ssh服务配置
#ssh服务安装包openssh-server
[root@server1 ~]# vim /etc/ssh/sshd_config
#Port 22 #监听端口,默认监听22端口
#AddressFamily any #IPV4和IPV6协议家族用哪个,any表示二者均有
#ListenAddress 0.0.0.0 #指明监控的地址,0.0.0.0表示本机的所有地址HostKey /etc/ssh/ssh_host_rsa_key # rsa私钥认证AllowUsers user1 user2 #允许远程登录的用户。
4、用户登录ssh服务器
实验1:修改ssh服务的端口号
#修改ssh服务的端口号
[root@server1 ~]# vim /etc/ssh/sshd_config
Port 2222
[root@server1 ~]# systemctl disable firewalld --now (现在立刻马上关闭)
[root@server1 ~]# setenforce 0 --- 允许登录
若selinux的状态为enforcing,会限制使用文件和端口;
如果不调成permissive状态,后面修改了端口号之后,关闭之后就不好登录了
[root@server1 ~]# getenforce
Permissive
[root@server1 ~]# systemctl restart sshd
[root@server1 ~]# systemctl restart nginx = nginx
关闭nginx:killall nginx
强制关闭:kill -9 进程号
实验2:拒绝root用户远程登陆
#请保持服务器上至少有一个可以远程登陆的普通远程账号
#修改配置文件如下:
vim /etc/ssh/sshd_config
#打开该选项并修改参数为no
PermitRootLogin no
#重启服务后生效,使用时使用普通用户进行登陆,需要使用root用户时再切换
注意:有些可能打开文件的时候,是PermitRootLogin prohibit-password,也是一样的操作,直接修改就好,但是文件里面最上面的Include /etc/ssh/sshd_config.d/*.conf,这一个文件里面是最优先执行的,所以这里面也要修改!!!
实验3:允许特定用户ssh登陆,其他用户都无法登陆
#编辑配置文件,在最后添加如下内容:
AllowUsers USERNAME
#USERNAME为你允许登陆的、账号【需要在系统中useradd该账号】,如果是多个用户,中间用空格隔开
#重启ssh服务后生效
实验4:linux客户端通过秘钥登录linux服务端root用户
#创建密钥对
[root@web ~]# ssh-keygen -t rsa
ssh-keygen 生成、管理和转换认证密钥 -t制定算法类型 RSA
/root/.ssh/id_rsa ---- 私钥文件,该文件的所属这才有权限读取
/root/.ssh/id_rsa.pub --- 公钥文件,所有认可读取
-f:指定存储路径
-N:例如:-N ""---指定密码为空
#复制该公钥文件到服务端的该目录下
[root@web ~]# ssh-copy-id root@192.168.177.129
#在本地服务器上登陆对端服务器
[root@web ~]# ssh root@192.168.40.132