在某些时候,使用密码作为登录服务器的认证方式是不太安全的,为避免密码被暴力破解,许多时候可以采用ssh密钥登录服务器,这里以CentOS为例。

一、生成密钥对

ssh-keygen -t rsa

一路enter跳过(当然你也可以自己定义,不过没必要),会在/root/.ssh下生成公钥(id_rsa.pub)私钥(id_rsa) (公钥是用于服务器端,私钥是用于客户端) 然后将私钥下载至电脑上(登录时会用到)。

二、修改sshd

vim /etc/ssh/sshd_config

#开启密钥登录功能:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

#密码不能为空:
PermitEmptyPasswords no

#另外,请留意 root 用户能否通过 SSH 登录,默认为yes:
PermitRootLogin yes

#当我们完成全部设置并以密钥方式登录成功后,可以禁用密码登录。这里我们先不禁用,先允许密码登陆
PasswordAuthentication yes

重启ssh服务
service sshd restart

三、在服务器上安装公钥

cd .ssh
cat id_rsa.pub >> authorized_keys
# 如此便完成了公钥的安装。为了确保连接成功,请保证以下文件权限正确:
chmod 600 authorized_keys
chmod 700 ~/.ssh

接下来就能够通过密钥登录服务器了:
在打开连接的时候会提示导入用户密钥,选择之前保存的私钥文件”id_rsa”即可。