欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

如何实现服务器无密码登录:SSH公钥的配置方法

最编程 2024-08-03 13:26:24
...

我们知道,用ssh [用户名]@[ip地址]登录远程服务器的时候,是需要输入登录密码的,有时候就很烦,比如以下情况:

  1. 在密码比较复杂的时候,你要花费很长时间来输入密码;
  2. 你在使用git的时候进行频繁提交:使用代码托管平台以及自建的git服务器。

实际上有一种解决方法——ssh免密验证。

步骤概览:

  1. 在本地生成公钥
  2. 将本地公钥存储在远程主机上
  3. 开启远程主机上的ssh公钥认证登录功能

1. 生成公钥

# -t 指定加密算法; -b 指定生成的密钥长度; -C 一句话,一般都填邮箱地址。
# 更多参数说明可以在终端输入:ssh-keygen --help 查看
ssh-keygen -t rsa -b 4096 -C "你的邮箱地址"

这条命令执行完之后,会提示你指定公钥和私钥的存储位置。

深度截图_选择区域_20180803235726.png

截图中指定的是/home/xu/test这个位置,届时私钥就存储在/home/xu/test,公钥存储在/home/xu/test.pub。公钥和私钥是成对的

2. 将公钥存储到远程主机

# i后面接的参数是保存你公钥的文件(我们这里是.ssh/id_rsa.pub);
# git是远程主机的用户,这条指令会往git这个用户的主目录下的
# .ssh/authorized_keys文件写入id_rsa.pub保存的公钥
ssh-copy-id -i .ssh/id_rsa.pub git@12.56.224.61  

网上好多教程说直接将公钥内容写到.ssh/authorized_keys就可以了,我是没成功,最后还是用这条命令写入才成功的。(后续添加公钥倒是可以直接添加文本内容到.ssh/authorized_keys,一个公钥一行。也许ssh-copy-id命令还做了其他事情吧。你可以执行cat /usr/bin/ssh-copy-id看一下它的内容)

3. 开启远程主机ssh的公钥登录

检查ssh服务的配置文件——/etc/ssh/sshd_config

 RSAAuthentication yes    # 这行一定要取消注释的(删掉#号)
 PubkeyAuthentication yes    # 我的服务器没这行,不添加似乎也能用
 AuthorizedKeysFile .ssh/authorized_keys    # 我的服务器没这行,不添加似乎也能用

网上好多教程说要重启ssh服务,额。我没重启也生效了呀
重启ssh服务命令
systemctl restart sshd