ssh免密连接

1.本地生成密钥对

在本地计算机上打开终端并输入

ssh-keygen

2.将公钥复制到要访问的远程服务器

  • 方法1:ssh-copy-id
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.意外情况

  1. SSH服务未启动或未正确配置

    确认SSH服务已经启动,并且已经正确地配置了sshd_config文件。还要确保防火墙允许SSH连接。

  2. 证书错误

    重新生成新的证书

  3. 证书文件指定的路径错误

    确认证书路径是否正确, 看配置文件中的/etc/ssh/sshd_config的AuthorizedKeysFile和authorized_keys文件的路径是否一致

  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替换成用户名

posted @ 2023-03-15 12:09  杨是杨柳的柳  阅读(147)  评论(0)    收藏  举报