ssh登录服务器的方式有三种:密码登录,公钥登录,证书登录。同时,密码登录有被破解的风险,网络上也有很多在扫描ssh端口的主机。
比如:
这里175.178.62.36
是一个来自广东的服务器,17次尝试密码登录我的服务器,好在都失败了。
针对这种行为我们可以使用公钥登录的方式保护服务器。
密码登录
这是最基本的一种登录方式,当我们使用 ssh 用户名@ip
时,命令会引导我们正确输入密码并且登录服务器。
输入密码之后就能登录到linux服务器了。
但是这种方式存在被暴力破解的风险
公钥登录
这是比较安全的一种登录方式,就是在自己的电脑上生成秘钥,然后将公钥的内容复制到服务器的authorized_keys
里,就可以不用再输入密码登录了。具体实现步骤如下:
1.本地windows操作
- Windows 打开 cmd
- 输入:ssh-keygen.exe
- 连续回车就 OK
- 完成后会在用户目录下的.ssh目录下生成公钥和私钥
2.远程服务器操作
- 在Linux 打开终端
- 输入 ssh-keygen 回车(生成虚拟机的公私钥)
- 完成后会在用户目录下生成 .ssh 目录(输入 ls -a 查看)
- 进入ssh目录
cd .ssh
vim authorized_keys
- 将 Windows 电脑 id_rsa.pub里的文本,拷贝到虚拟机 authorized_keys 里
3.免密登录
- windwos 打开 cmd
- 输入:ssh user_name@ip
- 如果windows用户名与你要登录 linux 的用户名相同,直接 ssh ip 即可`
关闭密码登录(可选)
此时我们需要在服务器关闭密码登录的方式
-
输入
vim /etc/ssh/sshd_config
-
在文件中找到如下两个变量,修改成如下的值
#禁用密码验证 PasswordAuthentication no #启用密钥验证 PubkeyAuthentication yes
-
重启sshd使修改生效。
service sshd restart
证书登录
它引入了一个证书颁发机构(Certificate1 authority,简称 CA),对信任的服务器颁发服务器证书,对信任的用户颁发用户证书。
登录时,用户和服务器不需要提前知道彼此的公钥,只需要交换各自的证书,验证是否可信即可。
证书登录的主要优点有两个:(1)用户和服务器不用交换公钥,这更容易管理,也具有更好的可扩展性。(2)证书可以设置到期时间,而公钥没有到期时间。针对不同的情况,可以设置有效期很短的证书,进一步提高安全性。
后续如果使用到会补充此方式的相关细节。