5分钟学习SSH

本文的主线 定义 => 原理 => 应用: (免密)安全登录&安全传输

定义

SSH是什么?

  • SSH是一种网络协议 用于两台机器之间: (免密)安全登录&安全传输

原理

基于非对称加密 即需要一对密钥 使用如下命令生成

1
ssh-keygen -t rsa -C "test@test.com"

默认生成至~/.ssh/目录下

1
2
3
4
5
6
ls -l ~/.ssh/id_rsa*
# -r-------- 1 kevin staff 2602 4 29 15:10 /Home/kevin/.ssh/id_rsa
# -r-------- 1 kevin staff 571 4 29 15:10 /Home/kevin/.ssh/id_rsa.pub

cat ~/.ssh/id_rsa.pub
# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQClJxSTK+gfovfR8w6durRcn+ueFC0bLkrf5qgeAcU65b1zxnnJ4EQnUhG+q+rsbg2ELYEcMYhMvegch4Y6NQSSrkDQQa34XKoI/erC9w8G/CPkAbZD1BX10KUfqBG0MPeEGWaKqOFFuOaM0QFAp90BkA8wuIndxNgG+1D9SRv64lH4LoiGDVzkkBgZ5rXH8zczEhKvj966juF3u6UvNwjBZblgXM5mEpWnrcwQcq9dZql/jpzM/Kg66dmNppP/qCudeq9chc1DGPwRDm+gYinvrUh97pGpslBbHPDxXK8Ye4ljT1zA9YdV9rQf4WecYw91ECyf6F/pRUkuqgfDOFOOxJ2K+alsHpPMp0WNnMakIpOmjyi0qIqOOjgZRGbWXzb6LP3tUXcbuYJlXZkUrsmodgWNnan6JmPmnNjq/J8fe4CHPImzu6Um84rL+pv1qgeURlb730R9eRdbsLNMTDM/9aKgp1Zq5m+uaQ3+usvl2aacCUEJ/OUFqd2WHG21CNM= test@test.com

id_rsa是私钥(自己保留不能泄露) id_rsa.pub是公钥(交给要访问的对象)

应用

安全登录

(免密)安全登录Ubuntu 1804 Server

  • 首先 确认Server已安装并启动SSH Service
1
2
3
4
5
apt list | grep openssh-server

sudo service sshd status
# ssh.service - OpenBSD Secure Shell server
# Active: active (running)
  • 然后 将密钥对中的id_rsa.pub公钥追加至 Server待登录用户的~/.ssh/authorized_keys
1
2
cat /home/op/.ssh/authorized_keys
# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQClJxSTK+gfovfR8w6durRcn+ueFC0bLkrf5qgeAcU65b1zxnnJ4EQnUhG+q+rsbg2ELYEcMYhMvegch4Y6NQSSrkDQQa34XKoI/erC9w8G/CPkAbZD1BX10KUfqBG0MPeEGWaKqOFFuOaM0QFAp90BkA8wuIndxNgG+1D9SRv64lH4LoiGDVzkkBgZ5rXH8zczEhKvj966juF3u6UvNwjBZblgXM5mEpWnrcwQcq9dZql/jpzM/Kg66dmNppP/qCudeq9chc1DGPwRDm+gYinvrUh97pGpslBbHPDxXK8Ye4ljT1zA9YdV9rQf4WecYw91ECyf6F/pRUkuqgfDOFOOxJ2K+alsHpPMp0WNnMakIpOmjyi0qIqOOjgZRGbWXzb6LP3tUXcbuYJlXZkUrsmodgWNnan6JmPmnNjq/J8fe4CHPImzu6Um84rL+pv1qgeURlb730R9eRdbsLNMTDM/9aKgp1Zq5m+uaQ3+usvl2aacCUEJ/OUFqd2WHG21CNM= test@test.com
  • 最后 本地就可以(免密)安全登录Server
1
ssh op@server-ip

安全传输

(免密)安全下载GitLab源码

  • 如果基于HTTP协议 需要输入账号密码
1
git clone https://gitlab.com/testing/api-test.git

learn-ssh-in-5-minutes-01.png

  • 此时基于SSH协议 可以(免密)安全下载GitLab源码
1
git clone ssh://git@gitlab.com:10133/testing/api-test.git