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. vue指令v-text示例解析

    <div id="app"> <!--两种方式都是插值,输出结果一样--> <p v-text="msg"></p&g ...

  2. java正则表达式提取地址中的ip和端口号

    由于我需要用到java正则表达式提取地址中的ip和端口号,所以我就写了一个demo,测试一下,下面是demo public class Test0810_1 { public static void ...

  3. Prerequisite check "CheckActiveFilesAndExecutables" failed.

    错误日志: [Aug , :: AM] Prerequisite check "CheckActiveFilesAndExecutables" failed. The detail ...

  4. Alpha版与Beta版

    简单说说这两个词的意思,以后会稍加更多的补充. Alpha版意在对少数主要客户和市场进行数量有限的分发,用于演示目的的早期构造.其无意在实际环境中使用.使用Alpha版的所有人员必须了解确切内容和质量 ...

  5. 移动端 canvas插入多张图片生成一张可保存到手机图片

    第一次写随笔,想把开发中遇到的问题与大家分享,可能会让您少走一步弯路. 先看下效果图: 代码分三部分为大家展示: 1.html 部分 <div id="myQrcontainer&qu ...

  6. js面试题知识点全解(一变量类型和计算)

    1.js中使用typeof能得到哪些类型 2.何时使用===和== 3.js中的内置函数 4.js变量按存储方式区分为哪些类型,并描述其特点 5.如何理解json 以下对这些问题的知识点做一些总结: ...

  7. Bug列表

    1.Space is not allowed after parameter prefix ': 这个问题主要原因是Hibernate不能识别SQL语句中的":="导致的网上有其他 ...

  8. iOS 工程自动化 - 思路整理

    4 月份参加 2017@Swift 大会的时候有幸听到了 @zesming 大佬关于美团组件化的 Topic,有一张图印象特别深刻. 来自 @zesming 大佬 后来跟 @zesming 大佬沟通怎 ...

  9. MySQL show 语句

    总览show 语句 show tables from database_name; -- 显示当前数据库中所有表的名称.  show databases; -- 显示mysql中所有数据库的名称.  ...

  10. [Firewall] iptables Configuration

    iptables usage: Add Rules: iptables -I INPUT -p tcp --dport -j ACCEPT iptables -I INPUT -p tcp --dpo ...