4.1SHH远程管理
SSH是一种安全通道协议,主要用来实现字符界面的远程登录,远程复制等功能。
4.1.1配置OpenSSH服务器
在 CentOS 7.3 系统中,OpenSSH 服务器由 openssh、openssh-server 等软件包提供(默认已安装),并已将 sshd 添加为标准的系统服务。执行“systemctl start sshd”命令即可启动 sshd 服务,包括root 在内的大部分用户(只要拥有合法的登录 Shell)都可以远程登录系统。
sshd 服务的默认配置文件是/etc/ssh/sshd_config,正确调整相关配置项,可以进一步提高sshd 远程登录的安全性。下面介绍最常用的一些配置项,关于sshd confg 文件的更多配置可参考 man 手册页。
1.服务监听选项
sshd服务使用的默认端口号为22,必要时建议修改此端口号,并指定监听服务的具体IP地址,以提高在网络中的隐蔽性。
[root@localhost ~]# vim /etc/ssh/sshd_config
Port 22 //监听端口为22ListenAddress 0.0.0.0 //监听地址为0.0.0.0...... //省略部分
UseDNS no //禁用DNS反向解析
[root@localhost ~]# systemctl restart sshd //重启sshd服务
2.用户登录控制
sshd服务默认允许root用户登录,但在Internet中使用时是非常不安全的。普遍的做法如下:先以普通用户远程登入,进入安全Shell环境后,根据实际需要使用su命令切换为root用户。
关于sshd服务的用户登录控制,通常应禁止root用户或密码为空的用户登录。
[root@localhost ~]# vim /etc/ssh/sshd_config
# 登录验证时间为2分钟
LoginGraceTime 2m # 允许root用户登录
PermitRootLogin yes # 使用严格的权限和所有权检查
StrictModes yes # 最大认证尝试次数为6次
MaxAuthTries 6 # 同一连接的最大会话数为10
MaxSessions 10 # 允许公钥认证
PubkeyAuthentication yes[root@localhost ~]# systemctl restart sshd
3.登录验证方式
对于服务器的远程管理,除了用户账号的安全控制以外,登录验证的方式也非常重要。sshd服务支付两种方式都启用。
密码验证:对服务器中本地系统用户的登录名称,密码进行验证。
密码对验证:要求提供相匹配的密钥信息才能通过验证。
[root@localhost ~]# vim /etc/ssh/sshd_config
PasswordAuthentication yes //启用密码验证
PermitEmptyPasswords no
PasswordAuthentication yes //启用密钥对验证[root@localhost ~]# systemctl restart sshd
4.1.2使用SSH客户端程序
1.命令程序ssh,scp,sftp
(1)ssh远程登录
通过ssh命令可以远程登录sshd服务,为用户提供一个安全的Shell环境,以便对服务器进行管理和维护。使用时应指定登录用户,目标主机地址作为参数。
[root@localhost ~]# ssh zhangsan@192.168.10.101 //连接zhangsan用户
The authenticity of host '192.168.10.101 (192.168.10.101)' can't be established.
ECDSA key fingerprint is SHA256:mHEmd62Axv3yu3ZTeTuKmqk1VpPRaOWKvymHTOiLOt8.
ECDSA key fingerprint is MD5:ac:fc:9b:63:4a:79:58:6d:9e:8f:2b:98:75:80:54:31.
Are you sure you want to continue connecting (yes/no)? yes //是否登录
Warning: Permanently added '192.168.10.101' (ECDSA) to the list of known hosts.
zhangsan@192.168.10.101's password: //输入密码
Last login: Sun Jun 16 14:42:09 2024
[zhangsan@localhost ~]$
2.scp远程复制
通过 scp 命令可以利用 SSH 安全连接与远程主机相互复制文件。使用 scp 命令时,除了必须指定复制源、目标之外,还应指定目标主机地址、登录用户,执行后根据提示输入验证口令即可。例如,以下操作分别演示了下行、上行复制的操作过程,将远程主机中的/etc/passwd 文件复制到本机,并将本机的/etc/vsftpd 目录复制到远程主机。
[root@localhost ssh]# scp 192.168.10.101:/etc/passwd /opt/mypass.txt //把192.168.10.101下的/etc/passwd的文件拷贝到 本地主机的/opt/mypass.txt
root@192.168.10.101's password:
passwd 100% 932 1.7MB/s 00:00
[root@localhost ssh]# cat /opt/mypass.txt //查看一下是否拷贝成功
3.sftp安全FTP
通过 sftp 命令可以利用 SSH 安全连接与远程主机上传、下载文件,采用了与 FTP 类似的登录过程和交互式环境,便于目录资源管理。例如,以下操作依次演示了sftp 登录、浏览、文件上传等过程。
[root@localhost ssh]# sftp 192.168.10.101 //连接到192.168.10.101
root@192.168.10.101's password:
Connected to 192.168.10.101.
sftp> ls
anaconda-ks.cfg
sftp> get aaa //创建aaa
Fetching /root/aaa to aaa
sftp> ls
aaa anaconda-ks.cfg bbb Fetching /root/aaa to aaa
sftp> put /opt/mypass.txt // 下载本地的文件
Uploading /opt/mypass.txt to /root/mypass.txt
/opt/mypass.txt 100% 932 1.2MB/s 00:00
sftp> exit
4.1.3构建密钥对验证的SSH体系
1.在客户端创建密钥对
在 CentOS 7.3 客户端中,通过 ssh-keygen 工具为当前用户创建密钥对文件。可用的加密算法为 RSA、ECDSA 或 DSA 等(ssh-keygen 命令的“-t"选项用于指定算法类型)。例如,以 zhangsan 用户登录客户端,并生成基于ECDSA 算法的 SSH密钥对(公钥、私钥)文件,操作如下所示。
[root@localhost ~]# ssh-keygen -t rsa //生成密钥
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:
SHA256:uvQV6pyskO6US5vYxWL2DABruDakUrTxhbwRQOxPopI root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
| oo.. |
| .. o |
|..o + . |
|.+o+.+ |
|o=++o S . |
|Eo ..+ . . . |
|=o @ = . . |
|o .O % * o |
| ..B =.* |
+----[SHA256]-----+
[root@localhost ~]# scp id_rsa.pub 192.168.10.101:/root/.ssh/authorized_keys //把私钥拷贝到192.168.10.101
//注意目标主机如果没有连接过需要自己创建.ssh目录