大多时候对SSH的安全有两种方式:
改一个高位的端口及强密码
关闭密码认证,改用密钥文件
下面分享取消密码认证,更改为密钥认证的方法:
生成密钥对(生成以后保存好以后换电脑也直接用这个了)
以下 ssh-keygen 命令默认在 ~/.ssh 目录(windows在用户目录下找)中生成 4096 位 SSH RSA 公钥和私钥文件。 如果当前位置存在 SSH 密钥对,这些文件将被覆盖。
ssh-keygen -m PEM -t rsa -b 4096
ssh-keygen \
-m PEM \
-t rsa \
-b 4096 \
-C "azureuser@myserver" \
-f ~/.ssh/mykeys/myprivatekey \
-N mypassphrase
命令解释
ssh-keygen = 用于创建密钥的程序
-m PEM = 将密钥的格式设为 PEM
-t rsa = 要创建的密钥类型,本例中为 RSA 格式
-b 4096 = 密钥的位数,本例中为 4096
-C “azureuser@myserver” = 追加到公钥文件末尾以便于识别的注释。 通常以电子邮件地址用作注释,但也可以使用任何最适合你基础结构的事物。
-f ~/.ssh/mykeys/myprivatekey = 私钥文件的文件名(如果选择不使用默认名称)。 追加了 .pub 的相应公钥文件在相同目录中生成。 该目录必须存在。
-N mypassphrase = 用于访问私钥文件的其他密码。
下面是将密钥操作至服务器,手动用SFTP放过去也可以,记得赋权。
cat ~/.ssh/id_rsa.pub | ssh remote_username@server_ip_address "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
#修改config
vim /etc/ssh/sshd_config
#如果是vim可以用“/”搜以下设置并修改。“:wq”退出
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
#重启服务
systemctl restart ssh