配置sshd服务
SSH(Secure shell)是一种能够以安全的方式提供远程登录的协议,也是目前远程管理Linux系统的首选方式。FTP或Telnet是一种以明文的形式在网络中传输账户密码和数据信息,很不安全。
sshd是基于SSH协议开发的一款远程管理服务程序,提供了两种安全验证的方法,
sshd服务配置文件中包含的参数及其作用
- 基于口令的验证-----用账户和密码来验证登录
- 基于密钥的验证-----需要在本地生成密钥,然后把密钥对种的公钥上传至服务器,并与服务器 中的公钥进行比较;该方式相较更安全
参数 作用 port 22 默认的sshd服务端口 ListenAddress 0.0.0.0 设定sshd服务监听的ip地址 Protocol 2 SSH协议的版本号 HostKey /etc/ssh/ssh_host_key SSH协议版本为1时,DES私钥存放的位置 HostKey /etc/ssh/ssh_host_rsa_key SSH协议版本为2时,DES私钥存放的位置 HostKey /etc/ssh/ssh_host_dsa_key SSH协议版本为3时,DES私钥存放的位置 PeamitRootLogin yes 是否允许root直接登录 StrictModes yes 当远程用户的私钥改变时直接拒绝连接 MaxAuthTries 6 最大密码尝试次数 MaxSessions 10 最大终端数 PasswordAuthentication yes 是否允许密码验证 PermitEmptyPassword no 是否允许空密码登录(默认不允许) sshd服务的配置文件信息保存在/etc/ssh/sshd_config文件中
1.基于口令的验证
使用sshd服务远程连接,这里我们打开Redhat8和centos8两台虚拟机.(两台虚拟机使用一样的网络配置模式)
sshd远程连接的格式为:“ssh [参数] 主机ip地址”。退出使用exit命令
通过ip a命令查询
centos8IP地址为192.168.80.129/24
redhat8IP地址为192.168.80.128/24
redhat8使用sshd服务远程连接centos8
使用exit命令退出
2.安全密钥验证
加密是对信息进行编码和解码的技术,再传输数据时,如果担心被他人监听或者截获,就可以在传输前先使用公钥对数据加密处理,然后再行传送。这样,只有掌握私钥的用户次才能解密这段数据,除此之外,其他的人即便截获了数据,一般也很难将其破译为明文信息
使用密钥验证的方式
①在redhat 8 上以用户student<普通用户>登录SSH服务器
②在centos 8生成"密钥对".查看公钥id_rsa.pub和私钥id_rsa
查看生成的公钥
查看生成的私钥id_rsa
③使用ssh-copy-id student@192.168.80.128 将生成的公钥文件传输到远程主机
语法格式为:ssh-copy-id 目标主机上的普通用户@目标主机ip地址
④把服务器redhat 8上的sshd配置文件的"PasswordAuthentication yes" 为"PasswordAuthentication no"使其只允许密钥登录,拒绝传统的口令验证
⑤在客户端centos8尝试使用student用户远程连接到服务器,此时无需输入密码也能成功连接。同时使用ip a 查询ip地址为192。168.80.128/24,即是redhat 8的IP地址,说明已经成功连接
⑥在服务器redhat 8上查看centos 8客户端的公钥是否传送成功
3.远程传输命令
scp(secure copy)是一个基于SSH协议在网络之间进行安全传输的命令,其格式为:
"scp [参数] 本地文件 远程账户@远程IP地址:远程目录"
命令参数:
-1 强制scp命令使用协议ssh1
-2 强制scp命令使用协议ssh2
-4 强制scp命令只使用IPv4寻址
-6 强制scp命令只使用IPv6寻址
-B 使用批处理模式(传输过程中不询问传输口令或短语)
-C 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
-p 保留原文件的修改时间,访问时间和访问权限。
-q 不显示传输进度条。
-r 递归复制整个目录。
-v 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
-c cipher 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
-F ssh_config 指定一个替代的ssh配置文件,此参数直接传递给ssh。
-i identity_file 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
-l limit 限定用户所能使用的带宽,以Kbit/s为单位。
-o ssh_option 如果习惯于使用ssh_config(5)中的参数传递方式,
-P port 注意是大写的P, port是指定数据传输用到的端口号
-S program 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。
服务端:redhat 8
客户端:centos 8
在客户端使用这个命令,发现报错了
出现这个的原因是客户端centos 8上没有服务端redhat 8 root用户的密钥,而且前面设置了其只允许密钥登录,拒绝传统的口令验证。所以我们这里会报错。
我们这里使用之前连接过的student用户进行传输
客户端:centos 8
服务端:redhat 8
如果,你想要传输到root用户,则只需要这几步
Ⅰ.vim /etc/ssh/sshd_config <客户端和服务端同时开启>
设置:PasswordAuthentication yes 也就是开启基于口令的验证
修改了配置文件,一定要重启服务
[root@localhost~]#systemctl restart sshd
Ⅱ.客户端centos 8
Ⅲ.服务端 redhat 8
这个时候,传输到root用户就设置完成了