Linux(12)——配置和保护SSH

        好久不见,我回来啦!

        这段时间各种事情很多同时家里又发生了些紧急事件,导致我断更了一个多月,对此我表示真挚的歉意。

        也请大家放心,我后续会慢慢恢复更新哒!


目录

一、Secure Shell:

1、登录远程系统:

2、使用 exit 命令注销远程系统:

3、识别远程用户:

二、SSH主机密钥:

1、密钥管理:

2、主机密钥检查:

三、基于SSH密钥的身份验证:

1、SSH密钥生成:

2、共享公钥:

3、SSH连接故障排除:

4、客户端配置:

四、常见OpenSSH配置:

1、禁用 root 用户通过 ssh 登录:

2、禁止对 SSH 进行基于密码的身份验证:


一、Secure Shell:

        OpenSSH软件包提供了红帽企业Linux中的Secure Shell或SSH协议,借助此协议,系统可以使用不安全的网络在加密且安全的通道中进行通信。

        使用ssh命令可以创建与远程系统的安全连接,将以特定用户的身份进行身份验证,并在远程系统上获取交互式shell会话。

1、登录远程系统:

        以下ssh命令将以 student 用户身份登录至 workstation 远程服务器,登录后可在远程系统上运行命令。

2、使用 exit 命令注销远程系统:

3、识别远程用户:

        w 命令可显示当前登录系统的用户列表、远程系统位置和用户运行的命令。

        上述输出结果中显示了,student 用户登录了 pts/0 上的系统,在今日01:02执行了 w 命令,并在执行 w 命令后闲置了1秒。

二、SSH主机密钥:

        SSH 通过公钥加密的方式保持通信安全。在客户端登录之前, 服务器会向其发送公钥副本,用于设置通信渠道的安全加密,并验证客户端系统的身份。

1、密钥管理:

        有关已知远程系统及其密钥信息存储在以下任一位置:

(1)系统范围的 /etc/ssh/ssh_known_hosts 文件;

(2)每个用户主目录中的 ~/.ssh/known_hosts 文件:

注:每个主机密钥条目包含三个字段:

        1)共享该公钥的主机名和IP地址列表;

        2)公钥的加密算法;

        3)公钥本身。

(3) 服务器的公钥存放在 /etc/ssh/*key.pub 文件中。

注:如果由于硬盘驱动器等故障导致密钥丢失,或由于某些正当理由需更换密钥并由此更改了服务器的密钥,则必须编辑已知主机文件将旧的密钥条目替换为新的密钥条目。

2、主机密钥检查:

       首次连接服务器时,会保存从服务器获得的公钥副本,并要求用户确认。

       用户连接服务器时,会检查客户机本地 /etc/.ssh/ssh_known_hosts 或 ~/.ssh/known_hosts 中是否含有服务器公钥,并与从服务器获得公钥进行匹配,以验证服务器的身份。

注:特定用户的 ~/.ssh/config 或系统范围的 /etc/ssh/ssh_config 中存在StrictHostKeyChecking 参数。

        将 StrictHostKeyChecking 参数设为 yes,则 ssh 命令在公钥不匹配时始终中断 SSH 连接;反之,此参数设置为no,则ssh命令将启用连接,并将目标主机的密钥添加到 ~/.ssh/known_hosts 文件中。

三、基于SSH密钥的身份验证:

        基于私钥-公钥对,可以配置 SSH 服务器,不输入密码就能登录服务器。

        用户必须生成公私密钥对,私钥用于身份验证,只有自己持有,必须妥善保管(可以设置密码加以保护,登录时需要输入私钥保护密码);公钥复制到希望远程访问的服务器账户上,用于验证私钥,不需要保密。

注:私钥只能由所有者读取,为 600 权限;公钥则可以被任何人读取,通常为 644 权限。

1、SSH密钥生成:

        ssh-keygen 命令可创建用户的公钥和私钥,默认保存在 ~/.ssh/id_rsa~/.ssh/id_rsa.pub 文件中。

注:使用 ssh-agent 配合 ssh-add 命令可将此私钥保护密码存入内存,协助登录时输入。

2、共享公钥:

        ssh-copy-id 命令可以将用户的 SSH 密钥对的公钥复制到目标远程系统中。

注:若使用 ssh-copy-id 命令指定特定的公钥,将使用默认~/.ssh/id_rsa.pub 文件。

3、SSH连接故障排除:

        若使用密钥进行身份验证的远程访问失败,可以通过ssh 命令通过 -v-vv-vvv 选项提供三个详细程度级别,以提供越来越多的调试信息。

        以下以 -v 选项为例,重要信息如下:

(1)OpenSSH和OpenSSL版本;

(2)OpenSSH配置文件;

(3)与远程主机的连接;

(4)尝试在远程主机上对用户进行身份验证;

(5)远程主机允许的身份验证方法;

(6)尝试使用 SSH 密钥验证用户身份;

(7)使用 /home/user/.ssh/id_rsa 密钥文件进行身份验证;

(8)远程主机接受 SSH 密钥。

4、客户端配置:

        可以创建 ~/.ssh/config 文件来预配置 SSH 连接。在配置文件中,可以为特定主机指定连接参数,如用户、密钥和端口。有了此文件,便无需在每次连接主机时手动指定命令参数。

注:~/.ssh/config 文件也可用于配置 SSH 跳转主机,在此文件内添加下图蓝色方框的内容即可。

        SSH 跳转主机是充当与其他主机(通常是内部主机)的 SSH 连接代理的服务器。

四、常见OpenSSH配置:

        OpenSSH 的守护进程名为 sshd,可通过编辑 /etc/ssh/sshd_config 文件以配置该服务。

1、禁用 root 用户通过 ssh 登录:

        root 具有最高权限,密码泄露可能造成最大损害,因此建议以普通用户身份进行登录,仅在有需要时提权成为 root。RHEL9 默认禁用 root 用户以密码登录。

        编辑 /etc/ssh/sshd_config,设置 PermitRootLogin no 可禁止普通用户以 root 用户身份远程登录。

2、禁止对 SSH 进行基于密码的身份验证:

        密码相对于公私钥保密性差,因此建议禁止通过密码进行身份验证,此时黑客无法通过猜测用户密码攻击已知用户。

        编辑 /etc/ssh/sshd_config,设置 PasswordAuthenticationno 可禁止对 SSH 进行基于密码的身份验证。

注:若要禁止基于密码的身份验证,但允许对 root 执行基于私钥的身份验证,可设置 PermitRootLoginprohibit-password

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值