1、免密登录

平时用 ssh 登录远程服务器时,大概会是这样:ssh root@123.123.45.168

并且还要输入密码,如果密码比较长,并且有各种特殊字符,简直是折磨

有了免密登录,再也不用输入那么一长串的命令

下面的例子就是登录我腾讯服务器,超级简单,只需要输入ssh tx就行了,不需要输入密码!

ssh-tx.gif

那怎么实现免密登录呢?很简单,流程如下:

1.1 本地生成公司密钥对

ssh-keygen -t ed25519 -a 200 -C "lihuacai168@gmail.com"
跟着提示操作就好,直接一路默认就行,最后生成的密钥对会放在~/.ssh目录下

命令解释:

ssh-keygen -t ed25519 -a 200 -C "your_email@example.com" 是一个用于生成 ed25519 类型 SSH 密钥对的命令。逐个分析这个命令的各个部分:

  1. ssh-keygen:这是一个用于生成、管理和转换 SSH 密钥的工具。
  2. -t ed25519:-t 选项表示要生成的密钥类型,这里选择的是 ed25519。ed25519 是一种现代的、安全的、高效的椭圆曲线签名算法,广泛应用于 SSH 密钥。
  3. -a 200:-a 选项表示密钥派生函数(KDF)的轮数。这个值越大,密钥生成过程越慢,破解难度越高。在这里,轮数被设置为 200,提高了密钥的安全性。
  4. -C "your_email@example.com":-C 选项表示注释。这里,可以使用电子邮件地址作为注释,以便更容易地识别和管理密钥。当然,可以使用任何其他有意义的字符串来替换电子邮件地址。

1.2 公钥添加到远程服务器

这面是一个快捷命令,一行就能完成

cat ~/.ssh/id_ed25519.pub | ssh 用户名@远程服务器地址 "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && cat >> ~/.ssh/authorized_keys"

如果有遇到报错,就把命令拆开执行:

配置完成后,在本地测试一下

ssh 用户名@远程服务器ip地址

正常的话,应该就能直接登录了

1.3 服务器起别名

如果要实现开头动图那样,不想每次都输入用户名和 ip,本地还需要做多一个配置

配置解释:

2、scp 自动补全

配置完 ssh 服务器别名之后,scp 自动补全就相当于额外赠送的了

scp-tx.gif

3、防密码被暴力破解

看到过很多人在连接远程服务器的时候,直接使用密码登录

这样会带来一些问题:
尤其是一些小白,刚买了服务器,没有什么安全意识。
就直接是裸奔,密码还是设置很简单的那种,什么root, 12345678, password, p@ssw0rd之类的。
简直就是送人头啊,这位同学就是曾经的受害人

image.png

刚买一周的服务器,就有遇到这么多次的破解

我设置了连续错误 3 次密码错误就拉黑

具体防范方法参考我博客这篇文章

https://blog.huacai.one/post/8

公众号原文


↙↙↙阅读原文可查看相关链接,并与作者交流