解决ssh能够远程连接但免密钥不生效问题(linux)

1.ssh简介

 

SSH是一种网络协议,用于计算机之间的加密登录。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,即使被中途截获,密码也不会泄露。

Windows系统ssh普遍用xshell和PuTTy

本文只涉及linux操作系统使用的ssh工具也就是OpenSSH

 

SSH的两种认证方式

  • 基于口令的安全认证 :与telnet类似,提供正确的用户口令后可以登录远程服务器。

  • 基于密钥的安全认证 :使用公钥和私钥对的方式对用户进行认证。

    (本文主要解决基本口令认证可以,但基于密钥认证不行的问题)

 

2.OpenSSH是什么?

OpenSSH是SSH的开源工具,使用加密的远程登录实现,可以有效保护登录及数据的安全。

 

openssh分为服务端与客户端

  • 服务端:openssh-server

  • 客户端:openssh-clients

 

所涉及命令与组件:

  • 远程操作管理:ssh   scp   sftp 

  • 密钥管理操作:ssh-add   ssh-keysign   ssh-keyscan   ssh-keygen

  • 服务端的组成:sshd, sftp-server 和 ssh-agent

 

3.解决ssh免密钥不生效方法

 

主要是依靠ssh-agent实现,原理如下:

 

  • 当 其他程序 需要身份验证的时候 可以将验证申请交给 ssh-agent 来完成整个认证过程。使用不同的密钥连接到不同的主机时,需要要手动指定对应的密钥,而ssh代理可以自动帮助我们选择对应的密钥进行认证。

  • 避免重复输入密码:如果您的私钥使用密码短语来加密了的话,每一次使用 SSH 密钥对进行登录的时候,您都必须输入正确的密码短语。而 SSH agent 程序能够将您的已解密的私钥缓存起来,在需要的时候提供给您的 SSH 客户端。这样子,您就只需要在使用 ssh-add 时将私钥加入 SSH agent 缓存的时候,输入一次密码短语就可以了。这为经常使用 SSH 连接用户提供了不少便利。

 

具体操作步骤(免密钥双方都需要做)

 

1)启动一个ssh-agent进程并输出环境变量

eval "$(ssh-agent -s)"

 

2)将密钥添加到ssh-agent中

ssh-add

 

 

 

 

posted @ 2021-11-19 10:53  晚风吹散了你  阅读(430)  评论(0)    收藏  举报