解决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

浙公网安备 33010602011771号