linux系统之间基于密钥对免输入密码登陆

  通常,我们登陆到一台linux主机是需要输入密码,这样可以验证登陆者的身份。

  这篇随笔里面我打算记录一下配置基于ssh密钥对登陆系统。在配置之前先和大家说明一下我遇到过的问题:刚接触到linux时候首先有了家目录的概念,为了使用,所以将/path/html权限改为777并改作为用户的家目录,这样每次登陆进系统时就直接到网站根目录下进行操作了,方便至极..........之前我的笔记本电脑是windows操作系统,用xshell连接服务器可以保存密码所以也一直用的很爽。直到我电脑换了linux操作系统,直接起终端ssh连接远程服务器。但是在配置ssh登陆时出现了问题。一切配置操作都是正常的,但是始终要输入密码。。。。无奈只能将用户家目录改到/home/username,定义切换路径的命令别名(/home/username/.bashrc 添加 alias chtml='cd /path/html' 这样在我使用username登陆后使用cthml命令就可以直接切换到/path/html目录).

  具体配置ssh密钥对登陆的操作:

    1.在本机生成密钥对,可直接用命令ssh-keygen(前提是系统安装了ssh,没有安装的话debian sudo  apt-get install ssh,centos yum install ),由于我电脑有密码,密钥对就没有再设置密码,一路敲回车。这个命令会在用户家目录的.ssh/生成两个文件,id_rsa和id_rsa.pub,其中id_rsa是我们的私钥,id_rsa_pub为公钥。

    2.将公钥添加至服务器,可以直接使用命令:ssh-copy-id -i ~/.ssh/id_rsa.pub username@server,之后输入username的密码即可。

    tip:在网络上搜索到很多博客都是这样操作第二步:

       scp id.rsa.pub username@server

      ssh username@server

      登陆到服务器后:cat id.rsa.pub >> ~/.ssh/authorized_keys 

              sudo server ssh restart

      感觉这样有点麻烦,可以一个命令完成的事情为什么非要做的复杂呢?

    只需要简单的两步即可配置完成,很简单。这样我们就可以直接连接, ssh username@server

  关于更改完家目录后无法给予ssh密钥对登陆的问题暂时还没有找到原因,之后明白了会写博客记录。我查看了/etc/ssh/sshd_config 中的设置,自动登陆的公钥是这样写的 AuthorizedKeysFile      %h/.ssh/authorized_keys ,如果没猜错的话可能是更改完用户家目录后寻找这个文件出现了问题,,但是该如何解决呢?

原文地址:https://www.cnblogs.com/jixingke/p/6169453.html