前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SSH免密登录

SSH免密登录

作者头像
晚上没宵夜
发布2021-07-20 10:35:28
1.1K0
发布2021-07-20 10:35:28
举报

用Git过程中看到过SSH什么的,之前不会就不想去看,今天就克服一下困难把

1. SSH是什么

SSH(Secure Shell)是较可靠的专为远程登录会话和其他网络服务提供安全性的协议,该协议会通过非对称加密方式对客户端发送的数据加密,对接收端的数据进行解密,从而实现数据传输的安全性。但传统的服务如FTP、Telnet都是明文传输,数据传输不安全,容易收到中间人攻击

OpenSSH是SSH协议的开源实现,OpenSSH工具的安装和使用都较为简单,一般的Unix系统、Linux系统、FreeBSD系统都附带对应的程序包,其默认端口为22

SSH可以做到:

  • 数据加密,防止DNS和IP欺骗
  • 数据压缩,加快传输速度

2. 实现原理

SSH是在传输层和应用层的协议。在传输层中(通常是TCP/IP)提供数据加密、密码主机认证、数据完整性服务;在应用层中提供用户认证(服务器质询)、会话标记(证明密钥所有权)、远程命令执行、登录会话、转发TCP/IP等服务

SSH由客户端和服务端组成。服务端提供对连接的处理(公共密钥认证、密钥交换、对称密钥加密),客户端提供SSH程序(远程登陆、安全文件传输)

SSH的验证方式有两种。一种是基于账号和密码的,类似于普通的登录功能、还有一种是基于密钥的,需要将你的公钥放入服务器才能使用

SSH基于密钥登录时,会携带上对应的公钥文件(在相应的用户目录下的.ssh文件夹内),默认找id_rsa公钥。SSH生成的配置信息默认在当前用户下的.ssh文件夹中,其中:

  • known_hosts:在客户端中,记录曾经连接的服务器授权
  • authorized_keys:在服务器中,是客户端免密连接的公钥文件

质询:服务器将客户端发过来公钥对比,然后用公钥加密"质询"发给客户端,客户端私钥解密之后再发回服务器

3. 使用步骤

3.1 服务器安装OpenSSH

代码语言:javascript
复制
# 笔者使用Centos7,一般默认安装了,查看版本即可
$ ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017

# 查看是否开启服务
$ service sshd status
Active: active (running)

3.2 客户端安装

代码语言:javascript
复制
# 笔者使用Win10,默认也是装了的,查看版本
# 或者安装XShell等集成SSH客户端的软件
$ ssh -V
OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2

3.3 基于账号密码的连接

代码语言:javascript
复制
# 1. 格式:ssh 服务器用户名@服务器ip地址
ssh root@1.116.136.xxx

# 2. 第一次连接主机会提示:无法验证主机的真实性,其公钥指纹是xxxx,确定连接吗?输入yes即可
yes

# 3.root@1.116.136.xxx's password:
直接输入服务器密码即可(之后就远程登录的服务器)

3.4 基于密钥的连接

代码语言:javascript
复制
# 1. 客户端生成公钥、私钥(id_rsa、id_rsa.pub)
$ ssh-keygen -t rsa -C "xxxx@qq.com"
-t:指定密钥类型,有rsa
-C:注释文字,常用邮箱
-f:指定密钥名(不建议使用)

# 会问你密钥保存的文件名,以及输入两次密码(用于push时验证的),都可以为空直接Enter跳过

# 2. 将客户端生成的公钥传到服务器当前用户名的.ssh文件夹下,并改名为authorized_keys

# 3. 再次使用ssh连接就会免密,而客户端的.ssh文件夹下会生成known_hosts文件,记录登陆过的主机
$ ssh root@1.116.136.xxx

4. GitHub使用公钥

4.1 Github上添加公钥

Title随便写,而Key则要填入客户端生成的.pub公钥

4.2 选择SSH协议地址

Github上SSH协议是以git@github开头的

4.3 测试

代码语言:javascript
复制
# 用pull代码测试,发现可免密登录
$ git pull git@github.com:xxx/xxx.git
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-07-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. SSH是什么
  • 2. 实现原理
  • 3. 使用步骤
    • 3.1 服务器安装OpenSSH
      • 3.2 客户端安装
        • 3.3 基于账号密码的连接
          • 3.4 基于密钥的连接
          • 4. GitHub使用公钥
            • 4.1 Github上添加公钥
              • 4.2 选择SSH协议地址
                • 4.3 测试
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档