一.概念
远程连接服务器通过文字或图形接口方式来远程登录系统,让你在远程终端前登录linux主机以取得可操作主机接口(shell),而登录后的操作感觉就像是坐在系统前面一样
二.分类
2.1文字接口
2.1.1 明文传输:Telnet.RSH等,目前这两种用的较少
[root@server ~]# yum install telnet-server -y # 安装telnet
[root@server ~]# systemctl start telnet.socket # 启动服务
# 使用xshell 新建telnet连接



如若不记得自己虚拟机IP,课在虚拟机上输入 ip a 回车,则显示IP
下载wireshake并启动
# 在https://www.wireshark.org/download.html下载安装wireshar
# 启动wireshark,选择捕获VMnet8网卡
# 在xshell中输入ip a 或其它命令
# 在wireshark选择记录后单右->追踪流->TCP流
# 可以看到是明文传输
2.1.2加密传输:以ssh为主,已取代明文传输
# 关闭上述telnet连接,建立ssh连接,查看是否为加密传输
SSH(Secure Shell Protocol,安全壳程序协议)由 IETF 的网络小组(Network Working Group)所制定,可以通过数据包加密技术将等待传输的数据包加密后再传输到网络上。
-
ssh协议本身提供两个服务器功能:
-
一个是类似telnet的远程连接使用shell的服务器;
-
另一个就是类似ftp服务的sftp-server,提供更安全的ftp服务。
-
2.2图形接口
- XDMCP、VNC、XRDP等
三.连接加密技术
目前常见的网络抓包加密技术通常是通过"非对称密钥系统"来处理的,通过两把不一样的公钥和私钥来进行加密与解密的过程
3.1密钥解析
-
公钥:提供给远程主机进行数据加密的行为,所有人都可获得你的公钥来将数据加密。
-
私钥:远程主机使用你的公钥加密的数据,在本地端就能够使用私钥来进行解密。私钥只有自己拥有。
公私钥的解密方法只有两种:
(1)小文用小明的公钥加密,小明只能用自己的私钥解密(这种方法私密性较好)
(2)小文用自己的私钥加密,小明在网站上下载小文的公钥解密(这种方法可以用于身份验证,数字签名)
四.ssh的服务配置
ssh远程登录的端口号为22
[root@server ~]# ss -lntup | grep sshd

4.1安装ssh
[root@zhangjiajie ~]# yum install openssh -y
切记,ssh的安装包名为openssh

4.2.ssh的配置文件分析
[root@server ~]# vim /etc/ssh/sshd_config
21.#Port 22 # 默认监听22端口,可修改
22.#AddressFamily any # IPV4和IPV6协议家族用哪个,any表示二者均有
23.#ListenAddress 0.0.0.0 # 指明监控的地址,0.0.0.0表示本机的所有地址(默认可修改)
24.#ListenAddress :: # 指明监听的IPV6的所有地址格式
26.#HostKey /etc/ssh/ssh_host_rsa_key # rsa私钥认证,默认
27.#HostKey /etc/ssh/ssh_host_ecdsa_key # ecdsa私钥认证
28.#HostKey /etc/ssh/ssh_host_ed25519_key # ed25519私钥认证
34 #SyslogFacility AUTH # ssh登录系统的时会记录信息并保存在/var/log/secure
35.#LogLevel INFO # 日志的等级
39.#LoginGraceTime 2m # 登录的宽限时间,默认2分钟没有输入密码,则自动断开连接
40 PermitRootLogin yes # 允许管理员root登录
41.#StrictModes yes # 是否让sshd去检查用户主目录或相关文件的权限数据
42.#MaxAuthTries 6 # 最大认证尝试次数,最多可以尝试6次输入密码。之后需要等待某段时间后才能再次输入密码
43.#MaxSessions 10 # 允许的最大会话数
49.AuthorizedKeysFile .ssh/authorized_keys # 选择基于密钥验证时,客户端生成一对公私钥之后,会将公钥放到.ssh/authorizd_keys里面
65 #PasswordAuthentication yes # 登录ssh时是否进行密码验证
66 #PermitEmptyPasswords no # 登录ssh时是否允许密码为空
......
123.Subsystem sftp /usr/libexec/openssh/sftp-server #支持 SFTP ,如果注释掉,则不支持sftp连接
AllowUsers user1 user2 #登录白名单(默认没有这个配置,需要自己手动添加),允许远程登录的用户。如果名单中没有的用户,则提示拒绝登录
注意:配置文件显示行号的命令为 shift+冒号 set nu
五.ssh实操
5.1 拒绝ssh账户远程登录
参数值含义
|----------------------|-----------|---------|-------|
| 参数类别 | 是否允许ssh登录 | 登陆方式 | 交互ssh |
| yes | 允许 | 无限制 | 无限制 |
| no | 不允许 | 无 | 无 |
| prohibit-password | 允许 | 仅允许使用密码 | 无限制 |
| forced-commands only | 允许 | 仅允许密钥 | 授权的口令 |
一般前两个经常用,后两个很少用
显示行号的命令shift + 冒号 set nu(在41行修改)
41 [root@server ~]# vim /etc/ssh/sshd_config
PermitRootLogin no # yes修改为no
# shift+冒号 wq保存并退出
[root@zhangjiajie ~]# systemctl restart sshd #重启服务
修改为no之后ssh就登录不上了

改为yes之后就顺利登录


切记一定要重启服务!!!!
5.2允许特定账户进行ssh登录,其他账户不能登录
1.服务器添加新账户
[root@zhangjiajie ~]# useradd test #添加新帐户test
[root@zhangjiajie ~]# passwd test #修改新账户test的密码

查看我们的有几个用户(可用用户为3个)

2.设置白名单设置那个账户可以用
[root@zhangjiajie ~]# vim /etc/ssh/sshd_config #进入配置文件
[root@zhangjiajie ~]# systemctl restart sshd #重启服务

随便找个空白地方,写上allowusers XXX XXX (单词必须显示黄色,否则不起作用,没显示就是拼写错误)允许那些账户可以登录,这里我写的是允许新建账户test和andy可以登录,root账户不能登录

root账户登不上去

andy账户可以登录

test账户可以登录
退出andy和test账户时,写上exit注销就退出了,也可以Ctrl+c终止并退出
六,总结ssh远程登录
SSH(Secure Shell)是一种加密的网络协议,用于在不安全的网络中安全地进行远程登录、文件传输和命令执行。
|----------------------------------|----------------|
| 命令 | 作用 |
| ssh username@hostname | 基本登录 |
| ssh -p port username@hostname | 指定端口登录 |
| ssh -i ~/.ssh/key.pem user@host | 指定密钥登录 |
| scp file user@host:/path | 安全传输文件 |
| ssh-copy-id user@host | 上传公钥到服务器 |
| ssh -v user@host | 调试模式(查看详细连接过程) |



