Linux远程访问及控制方式
作者:活老鬼
SSH(Secure Shell)是一种协议,用于安全地通过不安全的网络进行远程登录和其他网络服务,OpenSSH是SSH协议的一种开源实现,它支持数据加密,能有效防止信息泄露,适用于多种操作系统,SSH配置包括服务端和客户端,可以通过密码或密钥对验证方式进行身份验证
一、SSH远程管理
1. SSH概述
SSH(Secure Shell)协议
- SSH是一种安全通道协议,主要用来实现字符界面的远程登录,远程复制等功能。
- SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登陆时输入的口令。
OpenSSH
OpenSSH是实现SSH协议的开源软件项目,适用于各种UNIX、Linux操作系统。
- 服务名称:sshd
- 默认端口号:22
- 服务端主程序:/usr/sbin/sshd
- 服务端配置文件:/etc/ssh/sshd_config
- 客户端配置文件:/etc/ssh/ssh_config
2.SSH的优点
- SSH是较可靠,专为远程登录会话和其他网络服务提供安全性的协议
- 利用SSH协议可以有效防止远程管理过程中的信息泄露问题
- SSH最初是Unix系统中的一个程序,后来又迅速扩展到其他操作平台
- SSH在正确使用时可弥补网络中的漏洞
- 数据传输的过程是加密的,具有安全稳定的特点
- 数据传输的方式是压缩的,可以提高传输速度
3.配置OpenSSH客户端
- shd_config配置文件的常用选项设置
vi /etc/ssh/sshd_config ...... Port 22 #监听端口为 22 ListenAddress 0.0.0.0 #监听地址为任意网段,也可以指定OpenSSH服务器的具体IP LoginGraceTime 2m #登录验证时间为 2 分钟 PermitRootLogin no #禁止 root 用户登录 MaxAuthTries 6 #最大重试次数为 6 PermitEmptyPasswords no #禁止空密码用户登录 UseDNS no #禁用 DNS 反向解析,以提高服务器的响应速度 AllowUsers zhangsan lisi wangwu@61.23.24.25 #只允许zhangsan、lisi、wangwu用户登录,且其中wangwu用户仅能够从IP地址为61.23.24.25的主机远程登录 DenyUsers zhangsan #禁止某些用户登录,用法于AllowUsers类似(注意不要同时使用)
4.sshd服务支持的两种验证方式
密码验证
- 对服务器中本地系统用户的登录名称、密码进行验证。
- 简便,但可能会被暴力/破解
密钥对验证
- 有球提供相匹配的密钥信息才能通过验证。
- 通常先在客户端中创建一对密钥文件(公钥、私钥),然后将公钥文件放到服务器中的指定位置。
- 远程登录时,系统将使用公钥、私钥进行加密\解密关联验证。
- 能够增强安全性,且可以免交互登录
5. 使用SSH客户端程序
5.1 ssh - 远程登录
ssh "选项" "用户名"@"ip\名称" 例: ssh -p 1022 zhangsan@20.0.0.13 # "-p"指定端口号
5.2 scp - 远程复制
- 下行复制:
scp "用户名"@"ip/名称":"被复制的远程主机文件路径" "复制到的本机文件路径" 例:scp root@20.0.0.13:/etc/passwd /root/passwd10.txt
- 上行复制:
scp "被复制的本机文件路径" "用户名"@"ip\名称":"复制到的远程主机文件路径" 例:scp /root/passwd root@20.0.0.13:/etc/passwd10.txt
- "-r"选项:递归复制目录
- "-P"选项:指定端口号
6.配置密钥对验证
1.在客户端使用ssh-keygen工具创建密钥对文件(可用的加密算法为RSA、ECDSA、DSA等)
ssh-kegen -t rsa #"-t"选项:指定加密算法类型
[root@wzx ssh]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): #指定私钥位置(回车默认) Created directory '/root/.ssh'. 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: SHA256:GqXMgBqBoMByselDeDiNraMgVv17fJrXb7FQ0NHGl5o root@wzx The key's randomart image is: +---[RSA 2048]----+ |B .. .o+| |=O.+. . o=| |O.O... . +..| | O. +.o E . | |*.o =.S . | |=. . oo . . | |. .. o .. . o| | . +. . o | | o. o. | +----[SHA256]-----+
- 生成的私钥、公钥文件默认存放在宿主目录中的隐藏目录.ssh/下
2.将公钥文件上传至服务器
ssh-copy-id root@20.0.0.12 "-i"选项:指定密钥文件
[root@wzx ssh]# ssh-copy-id root@20.0.0.12 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" The authenticity of host '20.0.0.12 (20.0.0.12)' can't be established. ECDSA key fingerprint is SHA256:1R40yTT7DYnXgxAb8W4TabvlPcU9038lLVjDrQqnpnA. ECDSA key fingerprint is MD5:03:ae:25:33:8f:08:48:80:85:d4:3a:73:f2:49:83:a4. Are you sure you want to continue connecting (yes/no)? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys root@20.0.0.12's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'root@20.0.0.12'" and check to make sure that only the key(s) you wanted were added.
3.使用密钥对验证登录
ssh root@20.0.0.12
[root@wzx ssh]# ssh root@20.0.0.12 Last login: Mon Aug 19 23:47:41 2024 from 20.0.0.1
二、TCP Wrappers访问控制
1.TCP Wrappers 概述
- TCP Wrapper 机制的保护对象为各种网络服务程序,针对访问服务的客户端地址进行访问控制。
- 对应的两个策略文件为:/etc/hosts.allow 和 /etc/hosts.deny ,分别用来设置允许和拒绝的策略。
格式:
"服务程序列表":"客户端地址列表"
(1) 服务程序列表:
- ALL:代表所有的服务
- 单个服务程序:如"vsftpd"
- 多个服务程序组成的列表:如"vsftpd.sshd"
(2) 客户端地址列表:
- ALL:代表任何客户端地址
- LOCAL:代表本机地址
- 多个地址以逗号分隔
- 允许使用通配符"*"、"?",
- 网段地址,如 192.168.20. 或 192.168.20.0/255.255.255.0
- 区域地址,如".benet.com"
2. TCP Wrappers 机制的基本原则
首先检查/etc/hosts.allow(白名单)文件,如果找到相匹配的策略,则允许访问;
否则继续检查/etc/hosts.deny(黑名单)文件,如果找到相匹配的策略,则拒绝访问;
如果检查上述两个文件都找不到相匹配的策略,则运行访问。
- 允许所有,拒绝个别:
只需在/etc/hosts.deny文件中添加相应的拒绝策略
- 允许个别,拒绝所有:
除了在/etc/hosts.allow中添加允许策略之外,还需要再/etc/hosts.deny文件中设置"ALL:ALL"的拒绝策略。
三、对称密钥与非对称密钥
1.对称密钥(Symmetric Key)
对称密钥加密,又称为私钥加密或会话密钥加密算法,是一种加密和解密使用相同密钥或可以相互推算的密钥对的加密方式。
优点:
- 加解密速度快,适合处理大量数据
缺点:
- 密钥管理困难,泄露风险大
2.非对称密钥(Asymmetric Key)
非对称密钥加密,又称为公钥密钥加密,它需要使用一对密钥来分别完成加密和解密操作。这对密钥包括一个公钥和一个私钥,公钥可以公开发布,而私钥则由用户自己秘密保存。
优点:
- 泄露风险低
缺点:
- 加解密速度慢
四、在终端中使用私钥文件登录服务器
1.在服务端中生成密钥
[root@wzx ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'. 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: SHA256:xfbf6ZBU+BSvX7kPn4Pyu//Ug5kvOiZI2m6Bndv77Qg root@wzx The key's randomart image is: +---[RSA 2048]----+ | . | | . . o| | + . o.| | o . +..| | o S ...o.| | . = ..=o=| | + =E *++=| | . = o.+oo+=+| | o. .=+**==*| +----[SHA256]-----+
2.将id_rsa私钥文件导出到客户端(可使用ftp工具等)
3.找到公钥文件并追加到authorized_keys文件内
[root@wzx ~]# cd .ssh [root@wzx .ssh]# ls id_rsa id_rsa.pub [root@wzx .ssh]# cat id_rsa.pub >> authorized_keys [root@wzx .ssh]# ls authorized_keys id_rsa id_rsa.pub [root@wzx .ssh]# cat authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6bCV0EHdsXSD83CG4iNl81D1vDLiuywSsbj+3ANQOK4qRWNPOHfOIBXGANZQsT+33CrJY4ZvFnvcIeWpS+/fYyFnTekHPzuOROzcZYfkBxm1SB7YM5pLnHr8YdyUCOaYUhLYBuBixm80l1QvVOPnNRkKgzcOsOQSpOihGXgAa2d7lbOnr8UOO/aJ/6FQ2xxcCEcP9sG3h/uvCi7BP430XQPmfVksRm/tR+8sPNJNzioXgIoh5Sc6Rqp2C1IC3Krx3um4FCyqJJZJ6I7uY74g+L/Nt7IT3qTr13zVVjEAktNV0zMvdxRTNnIzEWTrhwEDASzJs3ewDjv1FESGErHTH root@wzx
4.配置sshd_config文件
ot@wzx .ssh]# vim /etc/ssh/sshd_config ...... PubkeyAuthentication yes #启用公钥验证 ...... [root@wzx .ssh]# systemctl restart sshd #重启刷新配置
5.在终端中设置私钥登录
6.登录
成功登录且不用输入密码
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。