远程SSH认证关闭密码改用密钥的方法


大多时候对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

文章作者: umikingso
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 umikingso !
  目录