如果使用GitHub比较多的朋友,对SSH Key肯定也不陌生,当我们SSH进行代码的pull&push时,往往需要我们配置SSH Key。

  如果Linux用的多朋友,肯定对SSH Key都很熟悉,当我们使用ssh命令连接其他Linux服务器时,如果没有配置SSH Key,它会要求我们输入密码,这不仅繁琐,而且受信任的网络背景下还需要输入密码,明显不太合乎情理,况且在某些没有人为干预的情况下,不方面输入密码,输入密码这种方式将变得不可行,不安全:

  

  这个时候我们就需要SSH Key了,接下来介绍使用OpenSSH来生成SSH Key。

  首先,我们需要安装OpenSSH。

  幸运的是,Linux默认情况下已经安装了OpenSSH,输入ssh即可验证是否已安装,如果未安装,可以使用apt-get(Ubuntu)或者yum(CentOS)来进行安装。

  而Windows环境下,OpenSSH 在 2018 年秋季已添加至 Windows,并包含在 Windows 10 和 Windows Server 2019 中,如果是其它版本的WIndows,那可能需要自己安装配置了。

  生成SSH Key

  生成SSH Key使用ssh-keygen工具组件,一般的,我们生成的是RSA公/私秘钥的SSH Key。

  生成之前,首先我们最好先确认我们之前是否已经生成过了,否则重新生成将会覆盖原来的SSH Key。  

    Linux:检查/home/[用户]/.ssh目录(root用户则是/root/.ssh目录)下是否存在id_rsa和id_rsa.pub两个文件
Windows:检查C:\Users\[用户]\.ssh目录下是否存在id_rsa和id_rsa.pub两个文件

  其中,id_rsa保存的是私钥,id_rsa.pub保存的是公钥。

  如果两个文件存在,那么不用生成,直接使用就行了,当然,你也可以将.ssh目录下的文件都删除,然后重新生成SSH Key,但这样会导致原来的SSH Key失效。

  如果不存在,我们执行下面的命令开始生成SSH Key:  

    # 可以使用 -f 参数指定私钥的存放文件,不指定,Linux默认保存到/home/[用户]/.ssh/id_rsa(root用户则是/root/.ssh/id_rsa),Windows默认保存到C:\Users\[用户]\.ssh\id_rsa
# 可以使用 -N 参数指定秘钥
ssh-keygen -t rsa

  

  命令执行后,在用户目录下的.ssh目录中就会生成id_rsa和id_rsa.pub两个公私秘钥文件了。

  使用SSH Key

  有了SSH Key,我们就可以使用ssh免密连接了,比如我还有一台服务器:192.168.209.129,这台服务上有个用户feng,那么我们在/home/feng/.ssh目录下创建authorized_keys文件(如果不存在),然后将上面生成的id_rsa.pub文件的内容追加进去:  

    # 进入用户主目录
cd ~
# 如果用户主目录下.ssh目录不存在,那么直接创建
mkdir .ssh
# 打开authorized_keys文件,将id_rsa.pub文件的内容追加进去,然后保存退出
vim .ssh/authorized_keys

  之后使用ssh连接192.168.209.129这台服务器就不需要密码了。

  我们还可以在github,gitee或者gogs等git平台使用SSH Key,在它们的管理后台都有一个SSH Key配置的选项卡页面,以gogs为例:

  

SSH公/私秘钥的生成及使用的更多相关文章

  1. Hadoop中ssh+IP、ssh+别名免秘钥登录配置

    1.为什么要进行 SSH 无密码验证配置? Hadoop运行过程中需要管理远端Hadoop守护进程,在Hadoop启动以后,NameNode是通过SSH(Secure Shell)来启动和停止各个Da ...

  2. git乌龟http/https以及ssh clone的秘钥配置永久免密码登录设置

    1.安装 安装Git 安装TortoiseGit 乌龟客户端 首先下载安装一个git客户端这个就不多说了基本就是next一直到底 安装后首次新建一个项目project在git服务器上 2.配置 1.注 ...

  3. centos ssh免密码秘钥登录

    假设从A主机ssh登录B主机,用秘钥代替密码,步骤如下: 1.在A主机上执行:ssh-keygen -t  rsa 一切默认,不用输入密码,生成两个文件: /root/.ssh/id_rsa /roo ...

  4. SSH配置免秘钥登录

    一.  SSH 配置免秘要登录 配置SSH 免秘要登录,虽然就那么几步,但总是会出现点小问题,今天就做下记录.SSH 免秘钥就是让两台机器相互信任,不需要输入密码就能相互登录.配置相互信任就是把各自的 ...

  5. ssh设置免秘钥登录

    系统:CentOS7.2 需求:A服务器的fab用户需要使用www用户免秘钥登录到B服务器 换句话说,就是在A服务器的fab用户下,ssh    www@B服务ip   -p  端口  ,然后登录过去 ...

  6. git 秘钥的生成

    在命令查看自己的秘钥还是公钥 cat .ssh/id_rsa.pub/cat .ssh/id_rsa

  7. Linux ssh服务开启秘钥和密码认证

    问题描述: 实现Linux秘钥和密码同时认证 解决方案: vim /etc/ssh/sshd_config 基本参数: PermitRootLogin yes #允许root认证登录 Password ...

  8. SSH密码和秘钥认证原理

    SSH登录方式主要分为两种: 1. 用户名密码验证方式 说明: (1) 当客户端发起ssh请求,服务器会把自己的公钥发送给用户: (2) 用户会根据服务器发来的公钥对密码进行加密: (3) 加密后的信 ...

  9. ssh秘钥交换详解与实现 diffie-hellman-group-exchange-sha

    ssh的DH秘钥交换是一套复合几种算法的秘钥交换算法.在RFC4419中称为diffie-hellman-groupX-exchange-shaX 的算法(也有另一种单纯的 rsaX-shaX 交换算 ...

随机推荐

  1. 【编程思想】【设计模式】【结构模式Structural】代理模式Proxy

    Python版 https://github.com/faif/python-patterns/blob/master/structural/proxy.py #!/usr/bin/env pytho ...

  2. grep命令输出显示高亮字

    grep命令执行后,终端上输出显示颜色可以加"--color=auto"的参数. 另外的两个办法是: 1.设置环境变量: export GREP_OPTIONS="--c ...

  3. 『与善仁』Appium基础 — 23、操作滑动的方式

    目录 1.swipe滑动 2.scroll滑动 3.drag拖拽事件 4.滑动方法小结 5.拓展:多次滑动 6.综合练习 在Appium中提供了三种滑动的方式,swipe滑动.scroll滑动.dra ...

  4. 8、Redis五大数据类型---哈希(Hash)

    一.哈希(Hash)简介: Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象. Redis hash 是一个键值对集合. 二.常用命令 1.h ...

  5. JavaWeb的三大作用域

    三大作用域描述 名称 类型 描述 request HttpServletRequest 将数据放在请求作用域中,在一次请求中实现数据的共享,比如请求转发 session HttpSession 将数据 ...

  6. 如何基于 Docker 快速搭建 Springboot + Mysql + Redis 项目

    目录 前言 项目目录 搭建项目 1. docker安装启动mysql以及redis 1.1 安装mysql 1.2 安装redis 2. 初始化数据库 3.创建项目 4.初始化代码 4.1 全局配置文 ...

  7. Linux编译安装、压缩打包、定时任务管理

    编译安装 压缩打包 定时任务管理 一.编译安装 使用源代码,编译打包软件 1.特点 1.可以定制软件 2.按需构建软件 2.编译安装 1.下载源代码包 wget https://nginx.org/d ...

  8. IDEA添加yaml自动补全语法插件

    问题:编写yml文件的时候,系统不能给自动补全 解决办法:File---->Settings---->Plugins---->搜索Spring Assistant x 项目效果预览

  9. AcWing09. 分组背包问题

    有\(N\)组物品和一个容量是\(V\)的背包. 每组物品有若干个,同一组内的物品最多只能选一个. 每件物品的体积是\(v_{ij}\),价值是\(w_{ij}\),其中\(i\)是组号,\(j\)是 ...

  10. 辅助函数和高阶函数 map、filter、reduce

    辅助函数和高阶函数 map.filter.reduce: 一.辅助函数:(1-1)响应式函数 (数组更新检测):    push()    pop()    shift()    unshift()  ...