用文本密码经常遇上被网络上扫端口撞库被入侵服务器的越来越多,不建议使用文本密码登录ssh,用key登录ssh大大的提高了安全性, 其实这也是一个老生常谈的问题了。

SSH KEY有什么用?

凡是使用到ssh协议的都可用key进行验证,ssh scp rsync git等等。

SSH KEY有什么好处?

不用文本密码直接免去系统密码直接登录,可以给key设置私有密码确保安全性。

生成ed25519的key

ssh-keygen -t ed25519 -C "your_email@example.com"

生成RSA的key

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

现在的新版windows也自带openssh-client,在windows下使用ssh-keygen命令像Linux一样生成一个私有的key也非常简单。

windows为例子生成key

Microsoft Windows [版本 10.0.26100.4349]
(c) Microsoft Corporation。保留所有权利。

C:\Users\86\>ssh-keygen
Generating public/private ed25519 key pair.
Enter file in which to save the key (C:\Users\86/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in C:\Users\86/.ssh/id_ed25519
Your public key has been saved in C:\Users\86/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:uwzbe9Z32n3cNE9heXGxXSVrMEnqxTTOOpTzeXL2ii8 86@DESKTOP-12B3R95
The key's randomart image is:
+--[ED25519 256]--+
|           .*...=|
|           B.+ +=|
|          = = o.=|
|         o = o +.|
|        S + + = o|
|         . . = oo|
|      . .  .   +=|
|       = .o E..oB|
|      . =+  .++o+|
+----[SHA256]-----+

windows下ssh-keygen默认ed25519加密方式(另外还有几种加密方式 ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa ,可以根据自己喜好选择), 第一步会提示保存路径,第二步passphrase会提示让你设置密码(也可以默认直接回车),第三步重复密码。

之后会生成两个文件C:\Users\86/.ssh/id_ed25519和C:\Users\86/.ssh/id_ed25519.pub保存好, id_ed25519是私钥在本地作为凭证,其中id_ed25519.pub就是公钥用在服务器上 路径是~/.ssh/authorized_keys

用记事本查看公钥内容

notepad C:\Users\86/.ssh/id_ed25519.pub

设置成脚本方便随时调用

#!/bin/bash
mkdir -p /root/.ssh/
cat >>/root/.ssh/authorized_keys<<EOF
替换成你的公钥内容
EOF

把脚本托管到网站上面方便随时调用

curl -SL 86.sb/key.sh|bash

登录验证

ssh root@服务器IP

如果key设置了passphrase,输入你的私有密码,没有设置passphrase则直接进入服务器了。