ssh免密配置

本文是第一篇转到md写的文档,作为对问题的总结,也作为使用md语法的开始。

ssh简介

ssh(Secure Shell)是一种加密的网络传输协议,在网络中创建安全隧道来实现ssh客户端与服务器之间的连接。
虽然任何网络服务都可以通过ssh实现安全传输,ssh最常见的用途是远程登录系统。在设计上ssh是Telnet和非安全shell的替代品,telnet等协议采用明文传输,不使用不可靠的密码,容易遭到监听、嗅探和中间人攻击。ssh旨在保护非安全网络环境中信息加密完整可靠。
ssh以非对称加密实现身份验证,人工生成一对公钥和私钥,通过生成的密钥进行认证,这样就可以在不输入密码的情况下登录。公钥需要放在待访问的计算机之中,而对应的私钥需要由用户自行保管。认证过程基于生成出来的私钥,但整个认证过程中私钥本身不会传输到网络中。
核实未知密钥来源都是重要的事情,因为SSH只验证提供用户是否拥有与公钥相匹配的私钥,只要接受公钥而且密钥匹配服务器就会授予许可。这样的话,一旦接受了恶意攻击者的公钥,那么系统也会把攻击者视为合法用户。

ssh原理

图解SSH原理
简单概述一下:原来是通过ssh user@host申请,然后server应答后,输入password,但这样会造成中间人攻击,就是代理截获了client与server之间的通信,伪装server骗取client的密码,然后对server进行攻击。
于是有了公钥认证的过程,就是俗称的免密,其过程就是客户端生成一段密钥对,然后把公钥设置到服务器的authorized_keys中,这样client与server都各有一对密钥,同时握有对方的公钥,只要进行配对认证,就可以不再输入密码了。

ssh免密配置

  • client端生成密钥对
    cd ~/.ssh
    ssh-keygen -t rsa -C “名字” -f “名字_rsa”

  • 放到server的~/.ssh/authorized_keys中
    上传到服务器有好几种方式,可以手动打开粘帖进去,也可以在客户端使用命令:
    ssh-copy-id -i 公钥 用户名@服务器

  • client配置~/.ssh/config

     Host xw
         HostName 47.98.197.178
         User root
         Port 22
         PubKeyAuthentication yes
         IdentityFile ~/.ssh/chenjing_rsa
    
  • 问题:

    1. signing failed: agent refused operation问题:
      一般情况下设置完如上操作,就可以访问了,若出现:sign_and_send_pubkey: signing failed: agent refused operation,则需要在client端将key增加到agent,操作如下:
      ssh-add ~/.ssh/your-key-name
    2. 有时候对key进行一些删除、修改操作,已有的配置不会更新会出现:It is also possible that a host key has just been changed...RSA host key for pong has changed and you have requested strict checking.Host key verification failed等提示。可以通过:
    ssh-keygen -R <host>
    如:ssh-keygen -R 192.168.3.10
    

    它会从known_hosts文件中删除hostname相关的配置

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×