1.密钥登录原理

一般我们使用xshell访问远程主机(Linux主机)时,都是先请管理员给我们开一个账户,即为我们设置一个一个用户名和对应的密码,然后我们就可以使用下面的方式登录到远程主机了:

在这种情况下,我们使用的是上面密码登录,也就是说只要知道你这个账号及密码的人都可以在任何地方登录到远程主机,因此安全性较低。

使用密钥登录则不同,他使用的是上图中的public key方式登录,这种方式涉及到一个加密算法RSA,这个算法先生成一个密钥对(公钥和私钥),

我们提供自己的公钥给远程主机,在登录的时候用私钥去认证,私钥存在本地(你自己的工作电脑上),并且在认证的时候,还需要用户输入私钥

的加密密码,其实就是一个双重保护:首先需要这个私钥文件,其次还需要知道使用私钥的密码。显然这个私钥文件是比较安全的,所以即使你使用

私钥的密码被别人知道了,它没有这个私钥文件也是白搭。so,说了一大堆就是一句话:这种方式忒安全嘞~

2.配置

使用密钥登录需要走以下几个步骤:

(a)在本地生成一个密钥对。使用xshell即可生成。xshell的工具->用户密钥管理者->生成->选择RSA,2048位->输入文件名和一个密码->完成,简单到爆。

(b)导出你的公钥为一个文件,这个东西是要发给管理员的,他需要把你的公钥放到远程主机,具体是这个文件:~/.ssh/authrized_keys,导出方法

为:工具->用户密钥管理者->找到你刚才输入和文件名->选择一个目录导出,然后把这个文件发给管理员,或者直接用记事本打开,把里面的内容发给他。

当然也许你只是想自己试试,那么你自己就是管理员,那么你还需要做更多的工作:

(c)因为你是管理员,意味着你已经拥有一台linux主机了,不管你是虚拟机,还是物理机。首先用root账号给自己建立一个普通用户(直接用root也行),

在这个用户的家目录下执行命令:ssh-keygen -t rsa,会生成一个隐藏目录(.ssh)和里面的文件,进入.ssh目录,创建一个文件authrized_keys,然后

将你的公钥串拷贝到该文件的中(如果是多个人使用一个账号登录这台主机,那么authrized_keys中可能不止一个公钥串,别把之前的内容覆盖了)。

(d)你以为你万事大吉了,立马想试试使用xshell登录看看,其实你还会遇到如下坑: (i)你是新装的系统,还没有安装ssh服务,使用xshell还是连不上,

而且连账号密码都不让你输,就给你报错了,你需要在远程主机上安装ssh服务:sudo apt-get install openssh-server。(ii)如果你想使用拖拽的方式将

公钥文件传到远程主机上,你还需要安装sz和rz:sudo apt-get install lrzsz。

这下应该可以用密钥登录了!试试看!

3.代理转发

为什么需要代理转发呢,当然是在比较复杂的场景中,如你在你的windows主机上工作,然后用xshell登录到远程主机A,并想在主机A上传递一个文件到

另一台远程主机B,那么毫无疑问你想用:rsync -e ssh -vz file username@ip:folder/,或者类似的方式来传递,当你输入这条命令后,会让你输入登录主机

B的密码,当然如果你只使用这条命令一次倒还好,假如你是在脚本里使用N次这条命令,那么你需要输N次密码,岂不抓狂。这个时候,就是代理转发登场

的时候了。

什么意思呢?你不是已经登录了主机A吗,主机A不可以有一对公钥和私钥吗,那么我们只需要如此如此:

(a)将主机A下的你的账号的公钥拷贝到主机B的那个authrized_keys文件中,主机A下你的账号的公钥就是~/.ssh/id_rsa.pub。这样做也就是表明:我想在主机

A上通过密钥登录主机B。

(b)在xshell中设置:工具 ->Xagent->设置->勾上确认ssh代理转发

这样就可以不用输入密码就能运行上面的命令了。

4.好处

好处还用多说吗~

windows下使用密钥登录Linux及xshell代理转发的更多相关文章

  1. [Linux] Windows 下通过SecureCRT 访问 Linux

    不愿意装双系统的,可以借助虚拟机(Vmware, Virtual PC等) 安装linux 进行使用. 至于如何使用虚拟机安装Linux 这部分,很简单: 下载好需要安装的Linux ISO 镜像文件 ...

  2. Windows下使用PSCP从Linux下载或上传文件

    1. 先下载putty包,然后解压 https://the.earth.li/~sgtatham/putty/latest/w64/putty.zip 2. 下载Linux文件到当前目录 PSCP.e ...

  3. windows下使用虚拟机安装linux操作系统

    前言:虚拟机是开发者的好帮手,它可以帮助我们在同一台电脑上创建不同的环境,这样你就可以在不影响原有的环境下,使用另外一套新的环境去完成你的开发工作.相信不少在windows下开发的同学对此深有体会,本 ...

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

    一.SSH加密方式 SSH采用的是"非对称密钥系统",即耳熟能详的公钥私钥加密系统,其安全验证又分为两种级别. 1. 基于口令的安全验证 这种方式使用用户名密码进行联机登录,一般情 ...

  5. 密钥登录linux

    一.linux 主机A登录linux主机B 在/etc/hosts文件下加入:(做硬解析) 192.168.1.60 u60 #设置u60为主机名 在节点A上创建RSA秘钥:(A上生成A主机密钥) # ...

  6. windows下SSH客户端远程访问Linux出现错误

  7. 在 Windows 下远程桌面连接 Linux - VNC 篇

    VNC是由AT&T试验室开发,是一款优秀的远程控制工具软件,后来以GPL授权的形式开源.经过几年的发展,现在的VNC已经不单指某个软件,而是一类软件的通称.下面介绍Linux下常用的两个VNC ...

  8. CentOS6.9下ssh密钥登录配置步骤(免密码登录)和ssh-keygen 命令常用参数

    密钥登录步骤(免密码登录)ssh登录提供两种认证方式:口令(密码)认证方式和密钥认证方式.其中口令(密码)认证方式是我们最常用的一种,出于安全方面的考虑,介绍密钥认证方式登录到linux/unix的方 ...

  9. Debian9.5下ssh密钥登录配置步骤(免密码登录)和ssh-keygen 命令常用参数

    密钥登录步骤(免密码登录)ssh登录提供两种认证方式:口令(密码)认证方式和密钥认证方式.其中口令(密码)认证方式是我们最常用的一种,出于安全方面的考虑,介绍密钥认证方式登录到linux/unix的方 ...

随机推荐

  1. C# Process.Start()

    本文转自:http://webcache.googleusercontent.com/search?q=cache:v4Sh6GlfJPYJ:blog.csdn.net/czw2010/article ...

  2. salesforce零基础学习(七十八)线性表链形结构简单实现

    前两篇内容为栈和队列的顺序结构的实现,栈和队列都是特殊的线性表,线性表除了有顺序结构以外,还有线性结构. 一.线性表的链形结构--链表 使用顺序存储结构好处为实现方式使用数组方式,顺序是固定的.所以查 ...

  3. 如何在MySQL中设置外键约束以及外键的作用

    1.外键的作用,主要有两个:     一个是让数据库自己通过外键来保证数据的完整性和一致性     一个就是能够增加ER图的可读性 2.外键的配置 1)先创建一个主表,代码如下: #创建表studen ...

  4. Loadrunner错误 -27727: 下载资源时步骤下载超时 (120 seconds) 已过期

    由于压力大了,下载资源所用时间就长了,可以设置加大超时时间 运行时设置 Internet 协议--首选项--高级--选项 --General--步骤下载超时(秒) 把这个值从120改为更大,如300, ...

  5. c++类与初始化,const

    --c++类与初始化,const --------------------------------2014/09/04 1. 类的定义(头文件.声明文件)看成类的外部接口,一般写成.h头文件. 2. ...

  6. python测试框架nose

    据说nose是一个比较牛逼的单元测试框架,今天打算来学习学习. nose不是python自带模块,这里我才用pip的方式安装 pip install nose 这样就完成了安装,然后再确认下是否安装成 ...

  7. centos下安装jenkins

    To use this repository, run the following command: sudo wget -O /etc/yum.repos.d/jenkins.repo https: ...

  8. GC选择之串行收集与并行收集

    GC 串行收集器 (古老 稳定 会有较长时间停顿)-XX:+UseSerialGC 新生代.老年代串行回收,新生代复制算法.老年代标记-压缩算法 并行收集器 ParNew (多核时性能比较好) Ser ...

  9. Callable+Future+newFixedThreadPool的应用

    最近在处理很多的数据,数据量比较大,但是处理的相对简单一些,没有什么复杂的业务逻辑,然后就使用了多线程去处理.因为一直停留在Thread和Runnable的知识中,项目中使用Callable,刚好可以 ...

  10. 把elipse非maven的Struts2+Spring+Ibatis项目导入Idea中

    1.按图示操作 2.选中自己要得到的项目 3.之后设定得到的项目放在哪里 项目得到之后,对项目点击右键Open Module Settings,点击Project,设置生成的编译文件存储路径 4.单击 ...