如何实现服务器无密码登录:SSH公钥的配置方法
最编程
2024-08-03 13:26:24
...
我们知道,用ssh [用户名]@[ip地址]
登录远程服务器的时候,是需要输入登录密码的,有时候就很烦,比如以下情况:
- 在密码比较复杂的时候,你要花费很长时间来输入密码;
- 你在使用git的时候进行频繁提交:使用代码托管平台以及自建的git服务器。
实际上有一种解决方法——ssh免密验证。
步骤概览:
- 在本地生成公钥
- 将本地公钥存储在远程主机上
- 开启远程主机上的ssh公钥认证登录功能
1. 生成公钥
# -t 指定加密算法; -b 指定生成的密钥长度; -C 一句话,一般都填邮箱地址。
# 更多参数说明可以在终端输入:ssh-keygen --help 查看
ssh-keygen -t rsa -b 4096 -C "你的邮箱地址"
这条命令执行完之后,会提示你指定公钥和私钥的存储位置。
截图中指定的是
/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