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. 发布内网网站服务器让公网可以访问,无需NAT

    有些时候,我们的测试网站搭建在我们的测试环境中,网站正式上线前,需要先测试下我们的测试网站是否正常,就可以用下面的方式将其内网网站服务器放至公网上,用器提供的外网地址就可以直接访问我们的内网网站服务器 ...

  2. Webpack 打包之体积优化

    谈及如今欣欣向荣的前端圈,不仅有各类框架百花齐放,如Vue, React, Angular等等,就打包工具而言,发展也是如火如荼,百家争鸣:从早期的王者Browserify, Grunt,到后来赢得宝 ...

  3. OS作业模拟进程分配与回收

    OS的一个作业, 模拟进程的分配与管理 # initialize the memories and the process list(actually a dict) total_memory = 1 ...

  4. IIS 发布之后 您要找的资源已被删除、已更名或暂时不可用。 404.0 解决方法

    步骤一: 如图,我发布网站后,在应用程序池中看到默认的.NetFreamork是2.0版本的,我把它改为4.0后 重新浏览网页就正常了. 如果还是不行,那么进行第二步,

  5. String、StringBuffer与StringBuilder

    String.StringBuffer与StringBuilder之间区别 最近学习到StringBuffer,心中有好些疑问,搜索了一些关于String,StringBuffer,StringBui ...

  6. Three.js使用局部纹理更新

    THREE.js开发的应用运行在iphone5下发现有些时候会崩溃,跟了几天发现是因为Sprite太多频繁更新纹理占用显存导致的.通常解决纹理频繁更新问题就要用到one draw all方法,放到纹理 ...

  7. numpy数组、向量、矩阵运算

    可以来我的Github看原文,欢迎交流. https://github.com/AsuraDong/Blog/blob/master/Articles/%E6%9C%BA%E5%99%A8%E5%AD ...

  8. “margin塌陷” 嵌套盒子外边距合并现象

    来源于官方文档对于外边距合并的解释: 注释:只有普通文档流中块框的垂直外边距才会发生外边距合并.行内框.浮动框或绝对定位之间的外边距不会合并. 出现外边距塌陷的三种情况: 1.相邻兄弟元素之间 若两者 ...

  9. 【Zookeeper】角色、顺序号、读写机制

    角色 leader 负责进行投票的发起和决议,更新系统状态 learner 包括follower和observer follower用于接受客户端请求并向客户端返回结果,在选举过程中参与投票 obse ...

  10. What is the difference between Debug and Release in Visual Studio?

    "Debug" and "Release" are actually just two labels for a whole slew of settings ...