Linux 使用 ssh key 进行免密登录

  1. 1. 服务器 A 生成 ssh key
  2. 2. 服务器 B 设置 .ssh 文件夹及 authorized_keys 文件权限
  3. 3. 使用 root 账户设置允许指定用户进行免密 sudo 操作
  4. 4. 禁止密码登录以及 root 账号远程登录

举例服务器 A 使用 ssh key 登录服务器 B。

服务器 A 生成 ssh key

1
2
ssh-keygen -t rsa //然后连按3次回车,ssh key 创建完毕
scp ~/.ssh/id_rsa.pub test@ip:~/.ssh/authorized_keys //上传 key 到 服务器 B,如果登录服务器 B 的用户还有生成过 ssh key 的话请先在用户的家目录创建 .ssh 文件夹

服务器 B 设置 .ssh 文件夹及 authorized_keys 文件权限

1
2
sudo chmod 700 -R ~/.ssh
sudo chmod 600 authorized_keys

使用以上操作便可以实现通过 ssh key 来进行免密远程登录了。以下讲的是设置用户如何进行免密 sudo 操作,禁止密码登录以及禁止 root 账户远程登录。

使用 root 账户设置允许指定用户进行免密 sudo 操作

使用 vim /ect/sudoers 编辑 sudoers 文件,在 root ALL=(ALL) ALL 下增加 test ALL=(ALL) ALL 即可允许用户进行 sudo 操作,在 # %wheel ALL=(ALL) NOPASSWD: ALL 下增加 test ALL=(ALL) NOPASSWD:ALL 即可实现免密 sudo 操作。

禁止密码登录以及 root 账号远程登录

  • 禁止密码登录

    修改 /ect/ssh/sshd_confg 文件,将 PasswordAuthentication 设置为 no

  • 禁止 root 账号远程登录

    修改 /etc/ssh/sshd_confg 文件,将 PermitRootLogin 设置为 no

修改完毕后使用 sudo service sshd restart 重启 ssh 服务即可。