远程连接服务–Linux中
1. 远程连接服务器简介
1.1 什么是远程连接服务器
远程连接服务器通过文字或图形接口方式来远程登录系统,让你在远程终端前登录linux主机以取得可操作主机接口(shell),而登录后的操作感觉就像是坐在系统前面一样。
1.2 远程连接服务器的功能
分享主机的运算能力
1.3 远程连接服务器的类型(以登录的连接界面来分类)
文字接口
明文传输:Telnet、RSH等,目前非常少用
加密传输:SSH为主,已经取代明文传输
图形接口:XDMCP、VNC、XRDP等
文字接口连接服务器
SSH(Secure Shell Protocol,安全的壳程序协议)它可以通过数据包加密技术将等待传输的数据包加密后再传输到网络上。ssh协议本身提供两个服务器功能:一个是类似telnet的远程连接使用shell的服务器;另一个就是类似ftp服务的sftp-server,提供更安全的ftp服务。
练习
实验环境---客户端200,服务器端100,相互之间可以通信,只有网段相同,才可以通信
1.远程连接服务器--安装vnc--dnf install tigervnc-server.x86_64 -y
vncserver :1(告诉已运行vncserver)
vncserver(开启vnc,显示端口为2)
连接端口,需关闭火墙,不允许超级用户用
vncserver :2
2.另一个虚拟机连接另一个虚拟机
另一个下载dnf install tigervnc.x86_64 -y
3.直接登录ssh -l root 172.25.254.200
2. SSH协议
2.1 概念介绍
SSH(Secure Shell),安全外壳协议,是一种建立在应用层基础上的安全协议,通过对密码进行加密传输验证,可以在不安全的网络中对网络服务提供安全地传输环境,实现SSH客户端和SSH服务器的连接,所以SSH是基于客户端-服务器模式。
2.2 功能作用
通过使用SSH,可以把所有传输的数据进行加密,这样“中间人”这种攻击方式就不可能实现,而且也能够防止DNS欺骗和IP欺骗。还有一个好处就是,传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以替代Telnet,又可以为FTP、Pop,甚至为PPP提供和一个安全的“通道”。
2.3 服务组成
- SSH服务由服务端软件OpenSSH和连接客户端(SSH、SecureCRT、xshell等)组成,默认端口是22。
- SSH是一个守护进程,负责实时监听客户端请求,并进行处理。
2.4 协议握手流程
2.5 ssh常用加密方法
- 对称加密(密码加密)
使用同一个秘钥进行加密和解密
对称加密特点:
对称加密的加密强度高,很难破解。在实际应用过程中不得不面临一个棘手的问题:如何安全的保存密钥
————————————————
- 非对称加密(密钥加密)
指的是有一对密钥(公钥和私钥):使用公钥对数据加密,加密后只能私钥去解密
1.远程server端收到client端用户TopGun的登陆请求,server端将自己的公钥发给client端。
2.client端使用该公钥对密码进行加密。
3.client端将自己加密好的密码发送到server端。
4.server端用自己的私钥对密码进行解密,然后验证client的身份是否合法
5.若验证结果通过,给client相应的响应。
私钥是server端独有,这就保证了client的登陆信息,即使在网络传输过程中被偷窃数据,也没有私钥进行解密,保证了数据的安全性,这充分利用了非对称加密的特性
练习及扩充
服务器必须要开一个程序sshd
systemctl status(必须是start) sshd,如果关了,就不行
加密过程,私钥都不能给
实验:rm -fr /root/.ssh/ 先删掉存放公钥私钥的地方
ssh -l root 172.25.254.100再连接
exit 退出远程登录
当服务器端和客户端密钥无法配对,那么客户端会被拒绝
3. SSHD服务
3.1 客户端ssh命令的用法
ssh [-l 远程主机用户] <ip|hostname>
[root@localhost ~]# ssh -l root 172.25.254.105 ##通过ssh命令在105主机中以root身份开启远程shell
-l #指定登陆用户
-i #指定私钥
-X #开启图形
-f #后台运行
-o #指定连接参数
-p #指定连接端口
## -o "StrictHostKeyChecking=no" 连接时不严格检查目标主机的密钥是否已经在本地已知主机密钥列表中,直接进行连接
[root@localhost ~]# ssh -l root@172.25.254.x -o "StrictHostKeyChecking=no" 首次连接不需要输入yes
-t #指定连接跳板
[root@localhost ~]# ssh -l root 172.25.254.1 -t ssh -l root 172.25.254.105
练习及扩充
开启图形,会占用终端
自己电脑公司里是连中继服务器,然后才连服务器
3.2 sshd服务的安全优化
交互式生成密钥
[root@localhost ~]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): ##输入保存密钥文件 Enter passphrase (empty for no passphrase): ##密钥密码,可以为空,否则输入大于四位密码 Enter same passphrase again: ##确认密码 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
非交互式生成密钥
# -f指定保存密钥文件,-P指定密码 [root@localhost ~]# ssh-keygen -f /root/.ssh/id_rsa -P ""
将本地的公钥复制到远程服务器的指定用户账户下,使得后续可以无需输入密码进行 SSH 连接(前提是远程服务器配置允许基于密钥的认证方式)。
[root@localhost ~]# ssh-copy-id -i id_rsa.pub root@172.25.254.100 # 作用:将本地的 id_rsa.pub 公钥文件中的内容,添加到 IP 地址为 172.25.254.100 的远程服务器上 root 用户的 ~/.ssh/authorized_keys 文件中。这样,之后再使用 root 用户通过 SSH 协议从本地连接到该远程服务器时,只要本地持有对应的私钥(这里应该是 id_rsa),就可以实现免密码登录。 # -i id_rsa.pub 指出要使用名为 id_rsa.pub 的公钥文件。 # root@172.25.254.100:这部分指定了目标。root 是要将公钥添加到其账户下的远程服务器用户名,@ 后面的 172.25.254.100 则是远程服务器的 IP 地址。 # 并且生成了 /root/.ssh/authorized_keys文件:Linux 系统中用于存储允许通过 SSH 密钥认证方式登录到 root 用户的公钥信息的文件。通常每一行代表一个公钥。
其他常用的安全优化参数
getenforce——用于查看当前系统强制访问控制(SELinux)状态。
查看SELinux状态
[root@localhost ~]# getenforce enforcing——强制模式 permissive——宽容模式 disabled——没有启动SELinux
关闭SELinux
[root@localhost ~]# grubby --update-kernel ALL --args selinux=0 [root@localhost ~]# reboot ##重启系统生效
安全优化
[root@localhost ~]# vim /etc/ssh/sshd_config Port 2222 #设定端口为2222,默认端口为22 PermitRootLogin yes|no #对超级用户登陆是否禁止 PasswordAuthentication yes|no #是否开启原始密码认证方式 AllowUsers lee #用户白名单 DenyUsers lee #用户黑名单 ## 编辑结束后重启sshd服务 [root@localhost ~]# systemctl restart sshd ## 当修改端口后,客户端进行ssh连接时,需要执行端口 [root@localhost ~]# ssh -l root 172.25.254.105 -p 2222 PasswordAuthentication 用于控制 SSH 服务是否允许通过密码进行认证。 当设置为yes时: 表示允许用户使用密码来进行 SSH 登录。这是比较常见的一种认证方式,用户在登录 SSH 时,需要输入正确的用户名和密码组合来通过认证,从而访问远程系统。 当设置为no时: 表示禁止使用密码进行 SSH 认证。这种情况下,通常需要依赖其他认证方式,如基于密钥的认证(通过ssh - key - pub和authorized_keys文件进行认证)来登录 SSH。这可以在一定程度上提高系统的安全性,因为密码认证可能会受到暴力破解等安全威胁,而密钥认证相对更安全一些。
3.3 远程传输文件
scp命令:用于在本地主机和远程主机之间复制文件。
# 将本地主机上的 /etc/passwd 文件复制到 IP 地址为 172.25.254.100 的远程主机的 /root/桌面/ 目录下,并且是以 root 用户身份进行复制操作的。 [root@localhost ~]# scp /etc/passwd root@172.25.254.100:/root/桌面/
也可以将远程主机上的文件复制到本机
[root@localhost ~]# scp root@172.25.254.100:/root/桌面/passwd /root/桌面/
复制目录时需要加 -r 参数
[root@localhost ~]# scp -r root@172.25.254.100:/etc/audit /root/桌面/
ocalhost ~]# scp root@172.25.254.100:/root/桌面/passwd /root/桌面/
- 复制目录时需要加 -r 参数
[root@localhost ~]# scp -r root@172.25.254.100:/etc/audit /root/桌面/