基于vagrant工具在win7下免密登录linux

一、SSH加密方式

SSH采用的是”非对称密钥系统”,即耳熟能详的公钥私钥加密系统,其安全验证又分为两种级别。

1. 基于口令的安全验证

这种方式使用用户名密码进行联机登录,一般情况下我们使用的都是这种方式。整个过程大致如下:

(1)客户端发起连接请求。

(2)远程主机收到用户的登录请求,把自己的公钥发给客户端。

(3)客户端接收远程主机的公钥,然后使用远程主机的公钥加密登录密码,紧接着将加密后的登录密码连同自己的公钥一并发送给远程主机。

(4)远程主机接收客户端的公钥及加密后的登录密码,用自己的私钥解密收到的登录密码,如果密码正确则允许登录,到此为止双方彼此拥有了对方的公钥,开始双向加密解密。

PS:当网络中有另一台冒牌服务器冒充远程主机时,客户端的连接请求被服务器B拦截,服务器B将自己的公钥发送给客户端,客户端就会将密码加密后发送给冒牌服务器,冒牌服务器就可以拿自己的私钥获取到密码,然后为所欲为。因此当第一次链接远程主机时,在上述步骤的第(3)步中,会提示您当前远程主机的”公钥指纹”,以确认远程主机是否是正版的远程主机,如果选择继续后就可以输入密码进行登录了,当远程的主机接受以后,该台服务器的公钥就会保存到 ~/.ssh/known_hosts文件中。

2. 基于密匙的安全验证

这种方式你需要在当前用户家目录下为自己创建一对密匙,并把公匙放在需要登录的服务器上。当你要连接到服务器上时,客户端就会向服务器请求使用密匙进行安全验证。服务器收到请求之后,会在该服务器上你所请求登录的用户的家目录下寻找你的公匙,然后与你发送过来的公匙进行比较。如果两个密匙一致,服务器就用该公匙加密“质询”并把它发送给客户端。客户端收到“质询”之后用自己的私匙解密再把它发送给服务器。与第一种级别相比,第二种级别不需要在网络上传送口令。

PS:简单来说,就是将客户端的公钥放到服务器上,那么客户端就可以免密码登录服务器了,那么客户端的公钥应该放到服务器上哪个地方呢?默认为你要登录的用户的家目录下的 .ssh 目录下的 authorized_keys 文件中(即:~/.ssh/authorized_keys)

二、配置免密登录

1、背景介绍

目标:A免密登录B

系统:A为win7,B为centos7.0(vitualbox)

工具:vagrant,ssh(git自带,需要配置环境变量)

背景简介:我在windows7上面使用vagrant将网上的box生成了虚拟机,当然中间使用了virtualbox作为中间工具,但是每次使用vagrant打开虚拟机都需要使用密码,很麻烦,所以想配置免密登录,但是配置完成之后还是不行。

2、使用第二种验证方式配置

2.1 在windows上面生成密钥和公钥

在任何地方使用ssh-keygen -t -rsa

该命令表示的是使用rsa算法生成公钥和私钥,当然算法还有dsa算法也可以用。

此步骤在提示Enter file in which to save the key(xxxx)的时候,需要提供路径和文件,不然会生成不成功,此后会提示输入密码,可以直接回车跳过

同时,建议将文件生成在用户目录下的.ssh文件夹下面

生成完成之后在输入的文件路径下查看

2.2 将私钥添加到SSH agent中

因为默认只读取id_rsa,为了让SSH识别新的私钥,需将其添加到SSH agent中ssh-add ~/.ssh/id_rsa

如果出现Could not open a connection to your authentication agent的错误,试着用一下的命令:

ssh-agent bash

ssh-add ~/.ssh/id_rsa

2.3 拷贝公钥到linux

1)登录linux,查看当前用户,我的用户为root,所以直接进入root目录,当然也可以直接使用cd ~来进入当前用户目录,如果客户机多用户,建议查看下当前登录的用户。

2)确定linux下面是否有ssh,如果没有则执行yum/apt-get install ssh

2)在用户目录下创建.ssh目录

3)拷贝win7生成的公钥到linux下刚才创建的.ssh里面,并且重命名为authorized_keys

4)修改.ssh权限

chmod 700 -R .ssh修改目录权限,这点很重要, 必须修改, 否则会配置不成功。

三、问题解决

1、vagrant登录用户配置

本以为大功告成,可以免密登录了,但是不对,我启动vagrant的时候,出现了SSH auth method: password

这不还是要密码么。。。检查配置,原来我在使用linux的时候,使用了root登录,并进行了配置,所以导致需要密码

所以注释掉其中两行,依然可以root登录。

2、私钥的使用

当我重启虚拟机,看到default: SSH auth method: private key时,一顿鸡冻,以为终于搞定了,但是接下来就尴尬了。。。

妈蛋,这什么情况,不是就卡死了么。。。

仔细看告警,是权限授权失败,跟我们主机相关的权限就只有公钥和私钥。这种长时间无法通过vagrant ssh登陆的问题可能会由于ssh认证机制导致失败。vagrant默认采用key登录,但所用的KeyPair可能没有正常配置。

使用vagrant ssh-config查看

看起来好像没什么不对,因为私钥是有的,但是一想,私钥我没配置过,这个是在我建立box的时候有的,那时候还没在本机生成过公钥和私钥呢,所以果断把刚才在本机生成的私钥拷贝过来,并且改名为private_key,覆盖掉f:/DownLoad/Vagrant/Box/centos7.0/.vagrant/machines/default/virtualbox/private_key

3、验证

上面的步骤完成之后,使用vagrant up启动虚拟机,然后使用vagrant ssh能顺利登录虚拟机则表示成功

注:如果环境不是使用的vagrant登录虚拟机,则只需看一二节即可,如果是其他ssh工具则需要看情况配置ssh服务或者私钥。

时间: 2024-10-10 22:24:40

基于vagrant工具在win7下免密登录linux的相关文章

linux下免密登录配置

1.首先大家先开三台虚拟机 2.回到首层. 2.1:编辑文件:    vim /etc/ssh/sshd_config 3:在master的linux上生成ssh密钥: ssh-keygen -t rsa 4.同理,这事slave1和slave2同以上操作!(在这截图展示效果): 5.接下来master上切换到.ssh下: 5.1命令:cd ~和cd .ssh 5.2:把生成的id_rsa.pub放置到slave1和slave2中~/.ssh目录下 5.2.1:命令:scp ~/.ssh/id_

linux下免密登录

建议修改一下主机名 centos7 #修改主机名为bigdata hostnamectl  set-hostname bigdata ##重启服务器,验证主机名是否生效 hostname hosts表设置 将hosts文件  复制到各个主机 scp hosts [email protected]:/etc/ 生产密钥 通过命令”ssh-keygen -t rsa“ [[email protected] ~]# ssh-keygen -t rsa Generating public/private

ssh免密登录linux服务器

Ssh免密登录 sshd服务 sshd简介: SSH 密钥为登录 Linux 服务器提供了更好且安全的机制.运行 ssh-keygen 后,将会生成公私密钥对.你可以将公钥放置到任意服务器,从持有私钥的客户端连接到服务器的时,会用它来解锁.两者匹配时,系统无需密码就能解除锁定. 官方维护文档:https://www.ssh.com/ssh/ 参考文档:https://www.cnblogs.com/ioveNature/p/7919115.html https://www.cnblogs.com

使用公钥和私钥实现LINUX下免密登录

linux公钥私钥实现无密码登录 首先本地主机生成公约和私钥 # ssh-keygen               /生成公钥和私钥 不要更改默认路径,中途不要输入密码,直接两次回车. 2.  将生成的公钥传送给远程主机 # ssh-copy-id   [email protected]          /传送公钥命令,传送公钥到目标主机 3. 验证 ssh [email protected] 原文地址:https://www.cnblogs.com/qiyunshe-NSD1805/p/92

linux bash下免密碼登陸ROS

linux命令 1.生成key文件 ssh-keygen -t dsa 2.copy到ROS文件目錄裏面 scp .ssh/id_dsa username@XX.XX.XX.XX: 3.登陸ROS,並在ROS上面導入key user ssh-keys import public-key-file=id_dsa.pub user=username linux bash下免密碼登陸ROS,布布扣,bubuko.com

Hadoop完全分布式环境搭建(二)——基于Ubuntu16.04设置免密登录

在Windows里,使用虚拟机软件Vmware WorkStation搭建三台机器,操作系统Ubuntu16.04,下面是IP和机器名称. [实验目标]:在这三台机器之间实现免密登录 [搭建准备] 1.三台机器上已建立一个共同的账号:hadoop,口令一致 [设置步骤] 1.在主节点master上设置 1).$cd ~/.ssh 使用ll命令查看,当前~/.ssh文件夹下是空的 2).生成一对密钥,本机的密钥,放在.ssh文件夹下 $ ssh-keygen -t rsa 生成过程中,一路回车即可

linux下配置远程免密登录

linux下各种集群搭建往往需要配置远程免密登录,本文主要描述了CentOs6.3系统下配置免密登录的详细过程. ssh远程登录,两种身份验证: 用户名+密码 密钥验证 机器1生成密钥对并将公钥发给机器2,机器2将公钥保存. 机器1要登录机器2时,机器2生成随机字符串并用机器1的公钥加密后,发给机器1. 机器1用私钥将其解密后发回给机器2,验证成功后登录 1.用户名+密码 如上图所示,机器1要登录到机器2 ssh 机器2的ip(默认使用root用户登录,也可指定,如:ssh [email pro

Shell脚本实现SSH免密登录及批量配置管理

本节索引 场景分析 ssh免密登录 pssh工具批量管理 SHELL自动化脚本 本篇总结 场景分析 作为一个运维工程师,不是每个人工作的环境都想阿里.腾讯那样,动不动就上亿的PV量,上万台服务器.我们通常还是工作在,几十台上百台服务器这样的环境,而使用ansible或者puppet这样的自动化运维工具则显得大材小用,并且最终的效果可能还不如几个小工具达到的效果好.像ssh免密登录在配合pssh这样的推送工具,在配合自动化配置脚本,可以说是即方便也使用.这一节将详细带大家以shell脚本的形式实现

linux上ssh免密登录原理及实现

因为我的服务器集群需要回收日志到中央进行统一处理,所以需要建立ssh互信关系实现免密登录.关于ssh的使用大家可能都很熟悉了,我们今天主要来讲下ssh连接和免密登录的原理. scp 传输文件 scp(secure copy)是linux系统下基于ssh登录进行安全的远程文件拷贝的命令. # 传递文件到远程 scp local_file remote_username@remote_ip:remote_file # 传递文件夹到远程 scp -r local_folder remote_usern