
PS E:\key>ssh-add -k .\qingcloud.txt
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for '.\\qingcloud.txt' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
开始我还纳闷,什么是too open
百度了下解决办法,linux都是说设为600
但是window的权限根本就不知道哪个和600对应
最后自己试了一下,把私钥放到用户文件夹的.ssh下面就添加成功了
右边边是可以在这个文件夹下添加私钥的
多出这个Users的权限,但是删了也没有用
最后发现只有在用户文件夹下面才有效
[TOC]
ssh 无密码登录要使用公钥与私钥。linux下可以用用ssh-keygen生成公钥/私钥对,下面以CentOS为例。有机器A(192.168.64.21),B(192.168.64.22)。
目标:A通过ssh免密码登录到B
特意强调,使用参数可以省去生成公钥/私钥的回车步骤
备注:
第一次登录需输入yes,现在A机可以无密码登录B机了,B登陆A,也同样,在B中生成公钥和私钥对,将公钥写入authorized_keys中,然后同步A、B中的authorized_keys,使其一致就ok了。
也即就是:登录的机子有私钥,被登录的机子要有登录机子的公钥,这个公钥/私钥对一般在私钥宿主机产生。上面是用rsa算法(不对称加密算法)的公钥/私钥对,当然也可以用dsa(对称加密算法:对应的文件是id_dsa,id_dsa.pub)
SSH是为建立在应用层和传输层基础上的安全协议( OSI七层与TCP/IP五层网络架构详解 )。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH 协议可以有效防止远程管理过程中的信息泄露问题。
从客户端来看,SSH提供两种级别的安全验证:
只要知道帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但缺点是:不能保证你正在连接的服务器就是你想连接的服务器。以下是登录验证流程:
当第一次链接远程主机时,会提示你当前主机的”公钥指纹”,询问你是否继续,如果选择继续后就可以输入密码进行登录了,当远程的主机接受以后,该台服务器的公钥就会保存到~/.ssh/known_hosts文件中。
这种验证的前提是客户端需要生成一对密钥,将公钥放到需访问的远程服务器。这种验证比上一种的好处是,不能仿冒真正的服务器,因为要仿冒必须拿到客户端生成的公钥。缺点就是验证等待过程稍长些。
1、在客户端打开终端,执行 ssh-keygen ,该命令会默认在 ~/.ssh/ 目录下创建 id_rsa 、 id_rsa.pub 两个文件,分别为你的公钥和私钥
2、将公钥 id_rsa.pub 文件拷贝到服务器端的 ~/.ssh/authorized_keys 文件中,可通过scp拷贝
A要免密码登录到B,B首先要拥有A的公钥,然后B要做一次加密验证。非对称加密,公钥加密的密文不能公钥解开,只能私钥解开
ssh-agent
ssh-agent是密钥管理器,是一种控制用来保存公钥身份验证所使用的私钥的程序
运行ssh-agent以后,使用ssh-add将私钥交给ssh-agent保管,其他程序需要身份验证的时候可以将验证申请交给ssh-agent来完成整个认证过程
ssh-agent是管理多个ssh key的代理,受管理的私钥通过ssh-add来添加
好处1:不用重复输入密码
用 ssh-add 添加私钥时,如果私钥有密码的话,照例会被要求输入一次密码,在这之后ssh-agent可直接使用该私钥,无需再次密码认证。
好处2:不用到处部署私钥
假设私钥分别可以登录同一内网的主机 A 和主机 B,出于一些原因,不能直接登录 B。可以通过在 A 上部署私钥或者设置 Forwarding(转发) 登录 B,也可以转发认证代理连接在 A 上面使用ssh-agent私钥登录 B;可以在A上直接sftp传文件到B上。
如这边有一台机器是local,能通过公钥直接登陆server1和server2。server1和server2之间无公钥登陆。
现在要在server1上直接登陆server2,在local上执行
执行了之后就将私钥给ssh-agent保管了,server1上面登陆server2的时候,需要私钥验证的时候直接找ssh-agent要就可以了
接下来登陆server1,注意-A
可以发现server1上多了/tmp/ssh-xxxxxxxxx/agent.xxxxx的socket,之后神奇的事发生了,在 server1上可直接进server2,只需执行如下命令,如果加了-A则可以继续ssh forwarding(转发) ,以至无限的机器forwarding。
ssh (-A) server2
同样的原理可以试一下sftp, scp等基于ssh的命令。
如运行ssh-add,遇到 Could not open a connection to your authentication agent.。
解决: 需要ssh-agent启动bash,或者说把bash挂到ssh-agent下面。
1 ssh免密码登陆及其原理
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)