免密码的SSH配置过程

 建立口令文件

  要想完成A与B之间的无密码SSH访问,需要将请求认证方的SSH口令文件的公钥发送到认证方并且追加到认证文件authorized_keys中。谁要访问别人就把公钥发送给对方。
  在这里,如果当前用户已经有公钥文件,说明当前用户有可能已经与其他主机建立免密码访问,可以不用生成口令文件,但也可以生成具有与已存在的口令文件不同名称的另一个口令文件。
  使用以下命令确认用户口令文件是否存在
    ls ~/.ssh/*.pub
  如果没有则使用下面的新建使用DSA加密方式的口令文件。文件存在的话请跳到第三步。
    ssh-keygen -t dsa
  然后一路回车,使用默认值就可以了。然后使用上面的ls命令就能看见生成的密码文件:私钥id_dsa 公钥id_dsa.pub两个文件。
  不知道怎么回事我的机器如果用rsa免密码会没效果

 完成验证过程

  在~/.ssh目录下使用下面的命令新建一个 authorized_keys 文件。
    touch ~/.ssh/authorized_keys
  然后使用下面的命令将本机加入到本机的免认证文件中,这样,在本机使用ssh登陆到本机时就不用输入密码了。当然,这步不是必须的。
    cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
  使用下面的命令将文件传送到目标主机。亦可以使用rsync命令等都可以。
    scp ~/.ssh/id_dsa.pub 远程用户名@远程IP:/home/远程用户名/
    
  登陆到对方主机,这里需要输入一次密码,然后执行下面的命令。
    ssh 远程IP   <输入密码>
    cat ~/id_dsa.pub >> ~/.ssh/authorized_keys
    rm ~/id_dsa.pub   删除传过来的公钥文件。
  当然,以上操作中若对方主机没有.ssh文件夹,则也需要使用ssh-keygen命令生成,并创建authorized_keys 文件。

 更改文件权限

  光把公钥文件添加到authorized_keys是不够的,因为ssh进程因为权限不够或者太大,免密码文件不会生效,因此需要使用下面两个命令将authorized_keys文件和.ssh文件夹设置成合适的权限。
  
    chmod 600 ~/.ssh/authorized_keys
    chmod 700 ~/.ssh
  
  这两个命令应该在所有的机器上执行。
  

额外事项

配置过程中学习到了vi等的非交互使用方法。例如

i
this is a line
CTRL+V <ESC>
w
END

复习一下数据加密:
A与B通信,A产生了公钥和私钥以后,把公钥公开(使用scp发给B),以后B向A发送数据就可以使用公钥加密了。
而签名是相反的过程,A产生了公钥和私钥后,私钥作为A身份的证明,用来产生加密数据让公开用户使用公钥查看,从而证明A的身份。

原文地址:https://www.cnblogs.com/yumingle/p/6550510.html