要实现 CentOS 无密码 SSH 登录,需分别在服务器端(被登录的机器)和客户端(用于 SSH 的机器)上分别配置。

客户端配置

生成公钥和私钥

ssh-keygen -t rsa -C "你的邮箱"
有提示一路 enter
生成完毕之后在 ~/.ssh 里面查看
id_rsa :私钥
id_rsa.pub :公钥

导入公钥到认证文件, 更改权限

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

#修改 sshd 的配置文件
vim /etc/ssh/sshd_config
# 找到以下内容,并去掉注释符”#“
RSAAuthentication yes
PubkeyAuthentication yes
# 这里指代了寻找免密登录公钥文件位置,所以在 ~/.ssh/ 下面必须要有 authorized_keys 文件
AuthorizedKeysFile .ssh/authorized_keys

重启 sshd 服务

systemctl restart sshd
或者
service sshd restart

查看 sshd 服务是否启动

service sshd status

公钥导入服务器

本机执行 scp -P 远程服务器端口号 ~/.ssh/id_rsa.pub 远程服务器登录用户@远程服务器ip:/home/id_rsa.pub  
登录到远程服务器执行 cat /home/id_rsa.pub >> ~/.ssh/authorized_keys
登录到远程服务器执行 chmod 700 ~/.ssh
登录到远程服务器执行 chmod 600 ~/.ssh/authorized_keys

服务器端配置

修改 sshd 的配置文件

vim /etc/ssh/sshd_config
# 找到以下内容,并去掉注释符”#“
RSAAuthentication yes
PubkeyAuthentication yes
# 这里指代了寻找免密登录公钥文件位置,所以在 ~/.ssh/ 下面必须要有 authorized_keys 文件
AuthorizedKeysFile .ssh/authorized_keys

重启 sshd 服务

systemctl restart sshd
或者
service sshd restart

查看 sshd 服务是否启动

service sshd status

验证

ssh -p 远程服务器端口号 远程服务器登录用户@远程服务器ip

  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    506 引用 • 718 回帖 • 932 关注
感谢    关注    收藏    赞同    反对    举报    分享