第三章:远程连接服务器
1、远程连接服务器简介
(1)概念
远程连接服务器通过文字或图形接口方式来远程登录系统,让你在远程终端前登录linux主机以取得可操作主机接口,使用主机的运算能力
(2)类型
文字接口(命令行接口) :明文传输:Telnet 23、RSH等,目前非常少用
加密传输:SSH为主,已经取代明文传输
图形接口:VNC(RFB)常见、XDMCP远程控制、XRDP(RDP3389)远程桌面等
2、连接加密技术
非对称加密:公钥、私钥
对称加密:一对钥匙
公钥(public key):提供给远程主机进行数据加密的行为,所有人都可获得你的公钥来将数据加密。 私钥(private key):远程主机使用你的公钥加密的数据,在本地端就能够使用私钥来进行解密。私钥只有自己拥有。
SSH工作过程
过程 | 说明 |
---|---|
版本号协商阶段 | SSH(应用层)目前包括SSH1和SSH2两个版本,双方通过版本协商确定使用的版本 |
密钥和算法协商阶 段(对称密钥) | SSH支持多种加密算法,双方根据本端和对端支持的算法,协商出最终使用 的算法 |
认证阶段 | SSH客户端向服务器端发起认证请求,服务器端对客户端进行认证 /etc/passwd /etc/shadow |
会话请求阶段 | 认证通过后,客户端向服务器端发送会话请求 |
交互会话阶段 | 会话请求通过后,服务器端和客户端进行信息的交互 |
3、ssh服务配置
[root@server1 ~]# vim /etc/ssh/sshd_config
17.#Port 22 #监听端口,默认监听22端口 【默认可修改】
18.#AddressFamily any #IPV4和IPV6协议家族用哪个,any表示二者均有
28.HostKey /etc/ssh/ssh_host_rsa_key # rsa私钥认证 【默认】(没有pub就是私钥)
29.#HostKey /etc/ssh/ssh_host_dsa_key # dsa私钥认证
30.HostKey /etc/ssh/ssh_host_ecdsa_key # ecdsa私钥认证
31.HostKey /etc/ssh/ssh_host_ed25519_key # ed25519私钥认证
43.SyslogFacility AUTHPRIV #当有人使用ssh登录系统的时候,SSH会记录信息,信息保存在/var/log/secure里面
48.#LoginGraceTime 2m #登录的宽限时间,默认2分钟没有输入密码,则自动断开连接
49.#PermitRootLogin yes #是否允许管理员远程登录,'yes'表示允许
51.#MaxAuthTries 6 #最大认证尝试次数,最多可以尝试6次输入密码。之后需要等待某段时间后才能再次输入密码(现在最多3次)
59.AuthorizedKeysFile .ssh/authorized_keys #选择基于密钥验证时,客户端生成一对公私钥之后,会将公钥放到.ssh/authorizd_keys里面
79.PasswordAuthentication yes #是否允许支持基于口令的认证
154.AllowUsers user1 user2 #登录白名单(默认没有这个配置,需要自己手动添加),允许远程登录的用户。如果名单中没有的用户,则提示拒绝登录
4、用户登录ssh服务器
(1)修改ssh服务的端口号
[root@server1 ~]# grep Port /etc/ssh/sshd_config
Port 2222
[root@server1 ~]# systemctl disable firewalld
[root@server1 ~]# setenforce 0
[root@server1 ~]# getenforce
Permissive 会警告,但不会阻止
[root@server1 ~]# systemctl restart sshd(2)拒绝root用户远程登陆
#请保持服务器上至少有一个可以远程登陆的普通远程账号
#修改配置文件如下:
[root@server1 ~]# grep PermitRootLogin /etc/ssh/sshd_config
PermitRootLogin no
[root@server1 ~]# systemctl restart sshd
#重启服务后生效,使用时使用普通用户进行登陆,需要使用root用户时再切换
#说明:注意新版本rhel9中的/etc/ssh/sshd_config和/etc/ssh/sshd_config.d/*.conf中的配置(3)允许特定用户ssh登陆,其他用户都无法登陆
#编辑配置文件,在最后添加如下内容:
AllowUsers USERNAME
#USERNAME为你允许登陆的账号【需要在系统中useradd该账号】,如果是多个用户,中间用空格隔开
#重启ssh服务后生效(4)linux客户端通过秘钥登录linux服务端root用户
#创建密钥对
[root@web ~]# ssh-keygen
ssh-keygen 生成、管理和转换认证密钥
#查看生成密钥文件
[root@web ~]# ll /root/.ssh
/root/.ssh/id_rsa私钥文件
/root/.ssh/id_rsa.pub公钥文件
#非交互式:-f指定私钥文件保存的路径,-N指定私钥文件的密码
[root@client ~]# ssh-keygen -f /root/.ssh/id_rsa -N ""
#复制该公钥文件到服务端的该目录下
[root@web ~]# ssh-copy-id root@192.168.59.143
#在本地服务器上登陆对端服务器
[root@web ~]# ssh root@192.168.59.143
5、拓展:
#查询系统上所有已经安装的包,在输出信息中使用grep过滤名字包合openssh的包
[root@client ~]# rpm -qa | grep openssh
openssh-8.7p1-24.el9_1.x86_64
openssh-clients-8.7p1-24.el9_1.x86_64
openssh-server-8.7p1-24.el9_1.x86_64
#列出openssh包安装后会生成哪些文件,并使用grep查找文件名中包含key和bin的文件
[root@client ~]# rpm -ql openssh | grep key | grep bin
/usr/bin/ssh-keygen
#查询该文件是哪个包产生的
[root@client ~]# rpm -qf /usr/bin/ssh-keygen
openssh-8.7p1-24.el9_1.x86_64
#更新密码
echo 123 | passwd --stdin xiaoming