服务器免密登录:ssh公钥配置

我们知道,用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

推荐阅读更多精彩内容

  • http://blog.csdn.net/pipisorry/article/details/52269785 什...
    cainiaomama520阅读 49,259评论 0 13
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 74,415评论 12 116
  • 1、远程连接服务器 远程连接服务器对于管理员来说,是一个很有用的操作。它使得对服务器的管理更为方便。不过方便归方便...
    Zhang21阅读 5,363评论 0 18
  • 本文最初发表于我的个人站点 SSH 是什么 SSH 为 Secure Shell 的缩写,由IETF的网络工作小组...
    foxchao阅读 424评论 0 1
  • 想和做 读《范雨素》,最冲击我的一句话就是:活着就要做点和吃饭无关的事。满足一下自己的精神欲望。 於我心有戚戚焉。...
    清香木y阅读 151评论 0 0