SSH 多密钥配置
前言
当我们从 GitHub 克隆某个仓库时,往往使用 HTTPS 协议,除此之外,也可以使用 SSH 协议;当我们的客户机与远端服务器连接时,更加离不开 SSH 协议。如果我们需要连接多个远程终端,那么合理配置多个 SSH 密钥就显得很有必要。
一、SSH 是什么
SSH 全称为:Secure Shell,是一种加密的网络传输协议,通过在网络中创建安全隧道来实现客户端与服务器之间的连接。SSH 在 数据传输 时基本上都采用对称加密方式,但是在进行 身份验证 时却需要采用非对称加密的形式,也就是 公钥—私钥对 的形式。
二、密钥生成工具
生成 SSH 密钥对需要使用 ssh-keygen
,如今的主流操作系统 Windows、Linux 和 macOS 等往往事先已经安装好了。
三、密钥类型
SSH 生成密钥对时可以使用多种加密算法,这些加密算法生成的最常用的密钥类型是 rsa 和 ed25519。
rsa:最常用的公钥加密算法,使用极其广泛,并且支持较好。密钥位数越多,安全性越好,但是性能会有所降低,常见的有 RSA 2048 和 RSA 4096 等。
ed25519:椭圆曲线算法生成的密钥,密钥长度短,安全可靠并且具有高性能。它的安全性在 RSA 2048 与 RSA 4096 之间,但是性能却在数十倍以上。(推荐使用)
ed25519 需要 OpenSSH 版本大于 6.5(2014 年的古老版本),应该不会有人的客户端和服务器不满足吧(不会吧不会吧!)
四、本地配置
ssh-keygen 生成的密钥对默认存储于家目录(Windows 的 C:\Users\xxx
,Linux/macOS 的 ~
)的 .ssh
文件夹中
1.单密钥配置
使用 ssh-keygen 命令选择一种密钥类型来创建
# 生成 RSA 2048 密钥
ssh-keygen -t rsa -b 2048 -C "your@email.com"
# 生成 RSA 4096 密钥
ssh-keygen -t rsa -b 4096 -C "your@email.com"
# 生成 ed25519 密钥
ssh-keygen -t ed25519 -C "your@email.com"
-t
:选择生成密钥的类型-b
:设置密钥位数-C
:密钥注释,这里要改为你自己的邮箱地址
执行以上命令后,会提示你设置密钥存储路径,按 Enter
默认即可。
然后会提示你设置密码,根据需要自行选择设不设置(不设置按 Enter
即可,已经非对称加密过,不设置也问题不大;设置的话安全性会提高,但是每次连接时需要输入密码,会麻烦一点)。
以生成密钥 ed25519 为例,操作完后会在家目录的 .ssh 文件夹中生成私钥 id_ed25519
和公钥 id_ed25519.pub
两个文件。
权限设置
在 Linux 中,还需要设置私钥文件的权限才可使用:
chmod 600 ~/.ssh/id_ed25519
2.多密钥配置
如果你同时使用 GitHub
、Gitee
和 阿里云
,都需要设置 SSH 密钥,可以将常用 SSH 登陆信息写进全局配置文件
打开终端,输入
# 创建 .ssh 文件夹
mkdir -p ~/.ssh
# 进入 .ssh 文件夹
cd ~/.ssh
以下介绍以生成 ed25519 密钥为例:
# 生成 GitHub 密钥
ssh-keygen -t ed25519 -f github_ed25519 -C "your@email.com"
# 生成 Gitee 密钥
ssh-keygen -t ed25519 -f gitee_ed25519 -C "your@email.com"
# 生成 阿里云 密钥
ssh-keygen -t ed25519 -f aliyun_ed25519 -C "your@email.com"
-f
:生成密钥的名称,可自行修改
在 .ssh 文件夹下创建 config
文件(~/.ssh/config
)
# ------------ 配置说明(始) ------------
# Host:别名,HostName:服务器域名或 IP 地址
# User:用户名
# 例:在 git clone git@github.com:torvalds/linux.git 中
# User 是 git,Host 是 github.com
# IdentityFile:私钥路径
# ------------ 配置说明(末) ------------
# ------------ 具体配置(始) ------------
# GitHub 密钥
Host github.com
HostName github.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_ed25519
# Gitee
Host gitee.com
HostName gitee.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitee_ed25519
# Aliyun
Host my_aliyun
HostName xxx.xxx.xxx.xxx
User xxx
Port 22
PreferredAuthentications publickey
IdentityFile ~/.ssh/aliyun_ed25519
# ------------ 具体配置(末) ------------
权限设置
在 Linux 中,配置文件 config
和私钥文件的权限都需要设置才可使用:
chmod 600 config github_ed25519 gitee_ed25519 aliyun_ed25519
五、远端配置
1.GitHub/Gitee
登陆 GitHub,依次打开 Settings => SSH and GPG keys => New SSH key
然后将公钥(切记是公钥)内容粘贴过去
最后,使用 ssh 命令测试与 GitHub 的连接
ssh -T git@github.com
提示时输入 yes
即可,如果出错,可以在 -T
后面加上 -v
参数查看具体错误信息
Gitee 和 GitHub 添加方法类似,不做赘述
2.服务器
在服务器系统中找到 ~/.ssh/authorized_keys
文件(没有则创建),另起一行,将本地公钥(切记是公钥)内容粘贴过去,并设置权限:
chmod 600 ~/.ssh/authorized_keys
测试连接,以 多密钥配置 中 阿里云
为例:
# 使用 Host 别名
ssh my_aliyun
# 不使用 Host 别名
ssh xxx@xxx.xxx.xxx.xxx
SSH 多密钥配置的更多相关文章
- Hadoop集群搭建的密钥配置SSH实现机制的配置(2)
[hadoop@weekend110 ~]$ ssh-keygen -t rsa 用来生产密钥对 Generating public/private rsa key pair. Enter file ...
- linux系统ssh免密钥登录配置
linux主机配置ssh免密钥登录,具体配置如下: 1.执行命令ssh-keygen -t rsa,生成公钥和私钥(具体步骤详见下图) 2.会在当前用户的家目录的.ssh/生成公钥和私钥, 3.执行s ...
- ssh的配置,ssh打开密钥登陆,关闭密码登陆。
刚装玩fedora,那么我们就以fedora为例来说一下怎么配置: 1.先确认是否已安装ssh服务: [root@localhost ~]# rpm -qa | grep openssh-server ...
- 配置SSH无密钥登陆(三)
配置SSH无密钥登陆 (1).关闭防火墙 对每个虚拟机进行如下操作: su chkconfig iptables off 执行之后重启虚拟机:reboot (2).关闭之后,在maste ...
- Firefly安装ROS及ssh远程登录配置
一.在Linux firefly 3.10.0 上安装ROS-indigo 快捷键 CTRL + ALT + T 打开终端并安装ROS-indigo sudo sh -c 'echo "d ...
- 服务器间打通ssh无密钥
1 打通无密钥 配置HDFS,首先就得把机器之间的无密钥配置上.我们这里为了方便,把机器之间的双向无密钥都配置上. (1)产生RSA密钥信息 ssh-keygen -t rsa 一路回车,直到产生一个 ...
- 多台计算机之间的ssh无密钥登录
在很多分布式系统中,我们最常遇到的一个问题是,需要在服务器集群上保证多台机器之间的SSH无密钥登录.以Hadoop为例,为了方便,我们需要在master和slaves之间配置密钥登录,这样我们启动Ha ...
- Linux远程登录ssh免密码配置方法(仅供参考)
这篇文章主要介绍了linux远程登录ssh免密码配置方法,需要的朋友可以参考下(http://www.0834-3659999.com) 一.情景 公司刚上几台Linux,现在要把主机之间都能远程ss ...
- Linux中ssh介绍与ssh+key密钥登陆部署
环境内核信息: [root@zabbix- ~]# uname -a Linux zabbix- -.el6.x86_64 # SMP Tue Mar :: UTC x86_64 x86_64 x86 ...
随机推荐
- 一文学会text-justify,orientation,combine文本属性
大家好,我是半夏,一个刚刚开始写文的沙雕程序员.如果喜欢我的文章,可以关注 点赞 加我微信:frontendpicker,一起学习交流前端,成为更优秀的工程师-关注公众号:搞前端的半夏,了解更多前端知 ...
- ChCore Lab2 内存管理 实验笔记
本文为上海交大 ipads 研究所陈海波老师等人所著的<现代操作系统:原理与实现>的课程实验(LAB)的学习笔记的第二篇.所有章节的笔记可在此处查看:chcore | 康宇PL's Blo ...
- tuandui last
组长博客链接### 组长博客 参考邹欣老师的问题模板进行总结思考### 设想和目标(2分)#### 1.我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 解决的问题 ...
- 文件传输协议:FTP、TFTP、SFTP有什么区别?
一个执着于技术的公众号 FTP 提供一种在服务器和客户机之间上传和下载文件的有效方式:是基于TCP的传输,FTP采用双TCP连接方式:支持授权与认证机制,提供目录列表功能. ---控制连接使用TCP端 ...
- BottomNavigationView点击刷新问题
BottomNavigationView点击刷新问题 问题: 项目中使用了BottomNavigationView作为底部导航栏. 点击item切换的时候发现会有闪烁现象出现. 原因: BottomN ...
- numpy学习Ⅱ
今天有空再把numpy看一下,补充点不会的,再去看matplotlib 回顾之前笔记,发现之前的numpy学习Ⅰ中关于numpy的行.列.维可能表述有点不清晰,这里再叙述一下 import numpy ...
- zabbix 添加监控交换机温度item
首先需要获取到交换机温度对应的OID,可以官方文档进行查询(多为私有OID),以盛科为例 官方文档查询到温度节点对于的OID为 10.0.3.102 1.3.6.1.4.1.27975.37.1.3. ...
- vue项目引入TinyMCE
1.安装 npm install @tinymce/tinymce-vue@3.0.1 -S 2.配置 <template> <!-- 富文本 --> <div> ...
- 796. Rotate String - LeetCode
Question 796. Rotate String Solution 题目大意:两个字符串匹配 思路:Brute Force Java实现: public boolean rotateString ...
- Linux用户权限集中管理方案
一.问题 服务器多,各个服务器上的管理人员多,ROOT权限泛滥,经常导致文件莫名其妙丢失,老手和新手对服务器的熟知程度不同,安全存在不稳定和操作安全隐患. 二.方案 利用sudo配置指定用户只能执行指 ...