SSH 无密码登录

要实现 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