1.本地生成密钥对
在本地计算机上打开终端并输入
ssh-keygen
2.将公钥复制到要访问的远程服务器
- 方法1:
ssh-copy-id username@remote_host
- 方法2:如果没有ssh-copy-id命令,就使用以下命令
cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
登录服务器将authorized_keys的权限改成600
chmod 600 /home/user_name/.ssh/authorized_keys
将“username”替换为您要登录的用户名,“remote_host”替换为服务器的IP地址或域名。
3.修改sshd配置文件
sudo vim /etc/ssh/sshd_config
- PasswordAuthentication 是否启用密码验证,看个人情况
- PubkeyAuthentication 是否启用公钥身份验证,设置为true
- PermitRootLogin 如果允许root用户通过SSH登录,设置为true
修改完配置文件,重启sshd服务
service sshd restart
或者
systemctl restart sshd
4.连接服务器
ssh username@remote_host
不出意外的话,就可以不用输密码了
5.意外情况
5.1 SSH服务未启动或未正确配置
确认SSH服务已经启动,并且已经正确地配置了sshd_config文件。还要确保防火墙允许SSH连接。
5.2 证书错误
重新生成新的证书
5.3 证书文件指定的路径错误
确认证书路径是否正确, 看配置文件中的/etc/ssh/sshd_config的AuthorizedKeysFile和authorized_keys文件的路径是否一致
5.4 文件和目录权限设置错误(重点)
确认所涉及文件和目录的权限设置是否正确,authorized_keys文件应该只能由所有者读写,通常是600权限,否则无法免密登录
chmod 700 /home/user_name
chmod 700 /home/user_name/.ssh
chmod 600 /home/user_name/.ssh/authorized_keys
user_name替换成用户名
标签:sshd,免密,name,keys,user,authorized,连接,ssh From: https://www.cnblogs.com/willow-yang/p/17218036.html