红帽系统管理一 10 章节 配置和保护SSH

目标

使用OpenSSH配置远程系统上的安全命令行服务。

关于ssh

首次连接时的公钥交换原理
在这里插入图片描述
服务器端的公钥存储在/etc/ssh/ssh_know_hosts 客户端存储公钥于~/.ssh/know_hosts

配置基于ssh秘钥的身份验证

通过配置ssh服务器,可以实现基于秘钥的身份验证而不使用密码。

生成ssh秘钥

要创建用于身份验证的私钥和公钥,请使用ssh-keygen命令。默认情况下,公钥和私钥分别保存在~/.ssh/id_rsa和 ~./ssh/id_rsa.pub文件中。

[root@#test ~]# ssh-keygen
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:eaz8WpEyQducsB/N5bdGRSVNMF8mojDabT1ay7xJcbk root@#test
The key's randomart image is:
+---[RSA 2048]----+
|        =   . *=O|
|       + X * + B+|
|      . = O B +.o|
|         * B =.o.|
|        S B = Eo |
|       . = o o.  |
|        o . o    |
|         o       |
|        ...      |
+----[SHA256]-----+

如果未在上述ssh-keygen运行提示时指定密码,那么生成的私钥是不受保护的,任何拥有这个私钥文件的人都可以使用他进行身份验证。而如下所示生成带密码的私钥,则使用密钥进行身份验证时需要输入密钥的密码。
生成带密码的密钥
-f 选项可用来确定保存密钥的文件。在下面的示例中,生成的公钥和密钥分别存放在/home/user/.ssh/key-with-pass /home/user/.ssh/key-with-pass .pub 中。公钥和密钥的权限模式必须为600和644。

[root@#test ~]# ssh-keygen -f .ssh/key-with-pass
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in .ssh/key-with-pass.
Your public key has been saved in .ssh/key-with-pass.pub.
The key fingerprint is:
SHA256:Q6BEyobRzuzizxAqebZahrZRnEhagvONnhBm5Q0NxWI root@#test
The key's randomart image is:
+---[RSA 2048]----+
|.. =B..          |
|.++Eo+ .         |
|*B*.o.  .        |
|=B*o.  .         |
|o+o+.   S        |
|o=+.     .       |
|*=B              |
|o*=.             |
|.ooo             |
+----[SHA256]-----+
[root@#test ~]# 
共享公钥

在如上操作生成密钥对之后,在使用基于密钥的身份验证之前,需要将公钥复制到目标系统上

复可以使用 ssh-copy-id 命令,将公钥复制到目标服务器上。在不指定公钥路径的情况下,他会发送/home/user/.ssh/id_rsa.pub文件。也可使用指定路径的公钥。

ssh-copy-id username@remote_server

ssh-copy-id -i .ssh/key-with-pass.pub username@remotehost

公钥将添加到目标服务器上的 ~/.ssh/authorized_keys 文件中。你需要提供目标服务器的用户名(username)和主机名(remotehost)。
执行上述命令后,可能需要输入目标服务器的密码或提供密钥密码(如果设置了密码)。

一旦你的公钥成功复制到目标服务器,你可以使用 SSH 连接进行测试,看是否可以无密码登录到服务器,如下所示:

ssh -i .ssh/key-with-pass username@remotehost

如果一切设置正确,将能够通过 SSH 连接到目标服务器,而无需输入密码。如上所示ssh命令时指定了私钥文件的路径,如不指定,ssh使用默认的/home/user/.ssh/id_rsa文件。

使用ssh-agent进行非交互式身份验证

如果密钥受密语保护,通常情况下必须输入密语才能使用密钥登录。ssh-agent程序可以临时的将密语存储到内存中。之后使用此密钥登录系统之后将无需输入密语。
启动ssh-agent

eval $(ssh-agent)

添加私钥,输入私钥密语

ssh-add #添加默认的私钥

ssh-add .ssh/key-with-pass #添加指定位置私钥,此密钥需要输入密语

注销启动agent的会话,将推出进程,密语被清除。

自定义openssh服务配置

目标

限制直接以root身份登录,并为openssh服务禁用基于密码的身份验证。
openssh由守护进程sshd提供,主配置文件为/etc/ssh/sshd_config。

禁止root使用ssh登录

将/etc/ssh/sshd_config文件中的PermitRootLogin的参数设置为no。设置完后需要重启sshd服务。sysytemctl reload sshd

禁止ssh进行基于密码的身份验证

仅允许基于私钥远程登录
将/etc/ssh/sshd_config文件中的PasswordAuthentication的参数设置为no。设置完后需要重启sshd服务。sysytemctl reload sshd

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值