SSH使用秘钥保护你的安全
本文最后更新于 1305 天前,其中的信息可能已经有所发展或是发生改变。 原创文章保留所有权利,允许提前告知征得同意并在明显位置保留原文链接的转载,任何无视版权的行为将受到搜索引擎的 DMCA 投诉。

众所周知,ssh可以通过密码登录,但是可能被有心之人穷举破解,然后 cd / && rm-rf *

那么秘钥如何保证你的安全呢?

在创建秘钥的时候,会生成两个文件,一个叫“公钥”,一个叫“私钥”
公钥存放在你的Linux服务器上,另一个存放在你的ssh客户端上。当客户端发起连接时,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密匙,然后把它和你发送过来的密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。

看不懂?

客户端:请求连接
服务器:好的,我找一下authorized_keys,然后我造一个随机数,用公钥加密了,再给你
客户端:我用我的私钥解密,加上本次会话的ID加密发给你
服务器:和我计算的一样,同意连接

配置过程

生成密钥对

1. 使用 ssh-keygen 生成密钥对:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

  • -t rsa:指定密钥算法为 RSA,你也可以选择其他算法如 dsaecdsaed25519
  • -b 4096:指定密钥长度为 4096 位,你可以选择其他长度
  • -C "[email protected]":一个注释信息而已,可以不是邮箱

2. 设置密钥文件名和保存位置: 系统将提示你输入保存位置。默认情况下会在 ~/.ssh 目录

3. 设置短语保护(可选):如果你选择设置,将需要在每次使用时输入短语。这会增加私钥的安全性。但是忘记密码就没有办法了

4. 生成密钥对: 完成上述步骤后,系统将生成密钥对,并将公钥保存在 <文件名>.pub 文件中,私钥保存在没有后缀的文件中。

传输公钥到远程服务器

1. 使用 ssh-copy-id 命令(推荐): 这是一个方便的方法,可以自动将你的公钥添加到服务器的授权中:

ssh-copy-id username@remote_server

  • username:用户名。
  • remote_server: IP 或主机名。

2. 手动复制公钥(备选方案): 如果没有 ssh-copy-id 命令,你可以手动将公钥内容添加到远程服务器的 ~/.ssh/authorized_keys 文件中。

在远程服务器上,打开 ~/.ssh/authorized_keys

nano ~/.ssh/authorized_keys

将公钥内容粘贴到这个文件中,保存并关闭文件。

3. 设置适当的权限: 确保远程服务器上的 ~/.ssh 目录和 authorized_keys 文件设置了适当的权限。使用以下命令设置权限:

chmod 700 ~/.ssh

chmod 600 ~/.ssh/authorized_keys

完成以上步骤后,你的公钥就已经成功传输到远程服务器上了。

测试连接

禁用密码身份验证

1. 编辑 SSH 服务器配置文件: 以root打开 SSH 服务器配置文件 /etc/ssh/sshd_config

nano /etc/ssh/sshd_config

2. 将 PasswordAuthentication 设置为 no:PasswordAuthentication 的值改为 no。这将禁用密码身份验证。

3. 重启 SSH 服务: 重新启动 SSH 服务以使更改生效。在终端中输入以下命令:

sudo service ssh restart

或者:

sudo systemctl restart ssh

7. 验证更改: 确保你可以通过公钥身份验证成功连接到服务器,而密码身份验证不再起作用。

现在,SSH 服务器将只接受公钥身份验证,而密码身份验证将被禁用。这将提高服务器的安全性,因为无法通过密码猜测或暴力攻击来进行身份验证。

半亩方塘 , 版权所有丨如未注明 , 均为原创丨本网站采用CC BY-NC-SA 3.0 CN协议进行授权
转载请注明原文链接:SSH使用秘钥保护你的安全
上一篇
下一篇
-->