SSH 服务详解 (三)-- 使用 SSH 代理

SSH服务详解(一)–Linux SSH 服务器与客户端的安装与启动

SSH服务详解(二)–使用私钥登录 SSH 服务器(免密登录)

SSH 服务详解 (三)-- 使用 SSH 代理

SSH 服务详解 (四)-- 本地调用远程主机的命令

SSH 服务详解 (五)-- 远程文件拷贝

SSH 服务详解 (六)-- Windows SSH 主机

SSH 服务详解 (七)-- SSH 连接 Github

  • SSH 服务器运行在 ubuntu 18.04.1
  • SSH 客户端在 Windows10

上一小节中使用命令

ssh -i .\id_rsa  tyustli@192.168.10.18

可以使用 SSH 远程连接到 SSH 服务器,但是每次都需要指定秘钥,本小节就梳理一下 SSH 代理相关的知识,有了 SSH 代理之后就不需要自己每次手动输入秘钥了

SSH 代理使用步骤

  • 启动 SSH 代理程序
  • 将对应私钥添加到 ssh 代理中,在添加私钥时,如果提示输入私钥的密码,正确的输入私钥密码即可将私钥添加到 ssh 代理中
  • 连接到远程用户
  • 私钥管理

SSH 代理介绍

ssh 代理是一个程序,它可以帮助我们管理私钥,ssh-agent 即为 ssh 代理程序

那么什么时候需要 ssh 代理帮助我们管理私钥呢?当遇到如下情况时,我们会需要 ssh 代理。

  • 使用不同的密钥连接到不同的主机时,每次都需要手动指定对应的密钥,ssh 代理可以帮助我们选择对应的密钥进行认证,不用手动指定密钥即可进行连接

  • 当私钥设置了密码,我们又需要频繁的使用私钥进行认证时,ssh 代理可以帮助我们免去重复的输入密码的操作

启动 SSH 代理

以管理员身份启动 powershell ,在 powershell 输入如下命令

ssh-agent

如果启动失败,会报错,例如错误

unable to start ssh-agent service, error :1058

设置 SSH 代理程序自动启动

Set-Service -Name ssh-agent -StartupType Automatic

StartupType 类型可以取如下参数

  • Automatic 2
    指示服务将由(或已由)操作系统在系统启动时启动。 如果一个自动启动的服务依赖于手动启动的服务,则该手动启动的服务也会在系统启动时自动启动。

  • Boot 0
    指示该服务是由系统加载程序启动的设备驱动程序。 此值仅对设备驱动程序有效。

  • Disabled 4
    指示服务已禁用,因此无法由用户或应用程序启用。

  • Manual 3
    指示服务仅由用户(使用服务控制管理器)或应用程序以手动方式启动。

  • System 1
    指示该服务是由 IOInitSystem 函数启动的设备驱动程序。 此值仅对设备驱动程序有效。

上述命令设置 SSH 代理程序自动启动,再次在 powershell 命令行中输入 ssh-agent 命令即可启动 SSH 代理程序
启动之后查看 SSH 代理程序

ps

命令执行之后结果如下

Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
-------  ------    -----      -----     ------     --  -- -----------...80       7     1388       5688       0.02  26776   0 ssh-agent609      32    31456      72296       6.03   6916   1 StartMenuExperienceHost..

如果想关闭 SSH 代理程序,使用命令

kill 26776 // kill pid

询问时候关闭 SSH 代理程序

确认
是否确实要针对以下项执行 Stop-Process 操作: ssh-agent(26776)?
[Y] 是 (Y)  [A] 全是 (A)  [N] 否 (N)  [L] 全否 (L)  [S] 暂停 (S)  [?] 帮助 (默认值为 “Y”): Y

输入 Y 即可

添加 SSH 私钥

私钥添加,将私钥交给 SSH 代理程序管理

ssh-add .\id_rsa

添加过程中会报错

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for '.\\id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.

这里提示私钥文件文件添加失败,原因是太多用户可以访问这个私钥,该私钥被忽略。所以需要修改私钥文件的权限

在 Linux 中可以使用 chmod 命令,但是 Windows 并没有这个命令

在 windows 中对应的命令是 icacls

具体 icacls/cacls 的命令参数可以参看相关的帮助文档(powershell 直接输入命令即可查看命令帮助)

给系统用户读取权限

 icacls .\id_rsa /c /t /grant system:R

禁用继承

icacls .\id_rsa /c /t /inheritance:r

给当前用户读取权限

 icacls .\id_rsa /c /t /grant tyustli:R # tyustli 为当前用户名

上述命令均会有如下命令执行结果

已处理的文件: .\id_rsa
已成功处理 1 个文件; 处理 0 个文件时失败

还有一种错误是

invalid format

这是因为 Linux 和 windows 两种系统对换行的处理不一样,Liunx 中换行 \n 但是在 windows 中换行是 \r\n

文件权限修改完成之后再次输入

ssh-add .\id_rsa

提示 SSH 私钥添加成功

Identity added: .\id_rsa (.\id_rsa)

远程连接

私钥添加到 SSH 代理程序之后,直接连接即可

ssh tyustli@192.168.10.18

此时不需要指定私钥,也不需要输入登录密码即可直接连接(如果私钥有密码,需要输入私钥的密码)

退出连接

exit

私钥管理

查看私钥管理相关命令

ssh-add --help
  -l          List fingerprints of all identities.-E hash     Specify hash algorithm used for fingerprints.-L          List public key parameters of all identities.-k          Load only keys and not certificates.-c          Require confirmation to sign using identities-t life     Set lifetime (in seconds) when adding identities.-d          Delete identity.-D          Delete all identities.-x          Lock agent.-X          Unlock agent.-s pkcs11   Add keys from PKCS#11 provider.-e pkcs11   Remove keys provided by PKCS#11 provider.-q          Be quiet after a successful operation.

SSH 服务详解 (三)-- 使用 SSH 代理相关推荐

  1. SSH服务详解(一)–Linux SSH 服务器与客户端的安装与启动

    SSH服务详解(一)–Linux SSH 服务器与客户端的安装与启动 SSH服务详解(一)–Linux SSH 服务器与客户端的安装与启动 SSH服务详解(二)–使用私钥登录 SSH 服务器(免密登录 ...

  2. SSH服务详解(七)– SSH 连接 Github

    SSH 连接 Github SSH服务详解(一)–Linux SSH 服务器与客户端的安装与启动 SSH服务详解(二)–使用私钥登录 SSH 服务器(免密登录) SSH 服务详解 (三)-- 使用 S ...

  3. Dropbear 安装配置与启动ssh服务详解

    Dropbear 安装配置与启动ssh服务详解  扎啤 关注 2017.09.12 22:57* 字数 441 阅读 4160评论 0喜欢 0 一.介绍 dropbear作为一款基于ssh协议的轻量级 ...

  4. 第1章 ssh命令和SSH服务详解

    基础服务类系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 本文对SSH连接验证机制进行了非常详细的分析,还详细介绍了ssh客户端工具的各种 ...

  5. Linux ssh命令详解,连ssh命令都不了解就别说自己会用Linux了

    前言 ssh相当于windows上的远程桌面连接,但没有桌面,只有文字终端.ssh是许多Linux使用者入门时必学的一个命令.借助ssh,开发人员可以很方便地连接远程或是局域网的其他电脑,直接在上面进 ...

  6. 【Linux】循序渐进学运维-服务篇-ssh配置文件详解

    大家好,我是高胜寒,本文是Linux运维-循序渐进学运维-服务篇的第4篇文章 文章目录 前言 配置文件的路径 配置文件详解 1. 修改默认端口 2. ListenAddress 0.0.0.0 3. ...

  7. freebsd SSH配置详解

    <script type="text/javascript"></script> <script type="text/javascript ...

  8. Linux -ssh登录 详解

    一.什么是SSH? 简单说,SSH是一种网络协议,用于计算机之间的加密登录. 如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会 ...

  9. linux 进程间通信 dbus-glib【实例】详解三 数据类型和dteeth(类型签名type域)(层级结构:服务Service --> Node(对象、object) 等 )(附代码)

    linux 进程间通信 dbus-glib[实例]详解一(附代码)(d-feet工具使用) linux 进程间通信 dbus-glib[实例]详解二(上) 消息和消息总线(附代码) linux 进程间 ...

最新文章

  1. CIO:辩证看待云计算 游戏规则已改变
  2. ecshop清除mysql缓存_禁用ecshop缓存,关闭ecshop缓存功能
  3. linq查询不包含某个值的记录_MySQL行(记录)的详细操作
  4. 计算机视觉目标检测算法总结4——其他SSD系列算法
  5. 学生考勤系统设计mysql_学生考勤系统的设计与实现(Eclipse,MySQL)
  6. h5php大转盘抽奖,html5转盘抽奖 完整代码下载(网页版)
  7. android 实现3d扫描,DIY:让Android手机轻松变3D扫描仪
  8. arduino步进电机程序库_Arduino入门教程15(步进电机驱动库的使用):Arduino Uno R3+ULN2003+步进电机 使用Stepper驱动库,控制步进电机转动角度...
  9. ubuntu上打开markdown文件
  10. H.264/AVC标准参考软件 JM
  11. android mp3 wav转换工具,音频提取转换工具app
  12. CocosCreator开发笔记(21)-cc.Sprite的动态加载和释放
  13. 2019年终职场盘点:如何用5级管理法,经营好自己最重要的资产?
  14. 最难php框架,PHP框架发展存四误区 死穴不除难成大器
  15. IE的F12开发人员工具不显示问题
  16. 2022亚马逊云科技re:Invent全球大会即将启幕
  17. 基于Node.js自我展示博客网站-计算机毕设 附源码231547
  18. 中考计算机专业如果忘了怎么办,中考信息不及格的后果,中考信息技术没通过...
  19. 德扑入门 进阶读物推荐 - 德州扑克小绿皮书
  20. 奇文共欣赏——《史记·陈冠希本纪》

热门文章

  1. DM数据库体系结构详解
  2. MMSegmention系列之一(准备数据集)
  3. Groovy的一些坑
  4. 获取MP3歌曲信息 歌曲名 歌手名 专辑等
  5. joj 2737 狼与羊的故事 求任意两点之间的必经之路
  6. 【北京迅为】嵌入式Linux+QT开发零基础入门+项目实战教程分享
  7. 【手把手带你学JavaSE】(项目展示)老鼠走迷宫和八皇后问题
  8. c#学习笔记05-treeview中添加图标
  9. 广工计算机研究生能去大厂吗,某大厂员工吐槽:广东工业大学毕业的也招,网易要没落了?...
  10. WIFI快连技术介绍