SSH 是什么
Secure Shell (SSH) 是一个允许两台电脑之间通过安全的连接进行数据交换的网络协议。通过加密保证了数据的保密性和完整性。SSH采用公钥加密技术来验证远程主机,以及(必要时)允许远程主机验证用户。
传统的FTP、Telnet是再网络中明文传送数据、用户帐号和密码,很容易受到中间人攻击。
SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。通过SSH可以对所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。
SSH Key是什么?
SSH Key(Secure Shell key)是一种加密技术,用于在计算机网络上进行安全的远程登录和数据传输。它是SSH协议的一部分,用于验证用户的身份并加密数据传输。
简单来说,SSH key就是一对加密密钥,包括公钥和私钥。公钥用于加密数据,私钥则用于解密数据。当您需要通过SSH协议连接到远程服务器时,您可以使用SSH key来验证您的身份。使用SSH key可以使远程连接更加安全,因为只有拥有私钥的人才能连接到服务器,而不是像密码那样通过共享密码进行身份验证。
在使用SSH key时,您需要在客户端和服务器之间进行密钥交换,以确保双方都知道对方的公钥和私钥。一旦密钥交换完成,您就可以使用SSH key连接到服务器,并且不需要输入密码。这样就可以避免使用弱密码或者密码被黑客破解的风险。
怎么用?
使用SSH key的步骤:
- 在客户端生成SSH key(密钥对:公钥和私钥)
- 在服务端的配置文件中加入你的公钥。(比如我们需要再GitHub中粘贴你的公钥)
生成SSH Key:
ssh-keygen -t rsa -C "your_secondemail@email.com"
生成过程中可以全部默认,回车跳过。
查看方法:
command+shift+g
进入~/.ssh
文件夹。
id_rsa
文件是私钥,id_rsa.pub
是公钥。
将公钥内容提供给有权限的github账户,加入允许名单,本地通过私钥可通过权限校验。
使用非默认的SSH key
- 为不同服务器的同一用户配置不同SSH key
对于OpenSSH客户端(Linux默认安装),需要在 ~/.ssh/config
文件中进行配置(如果没有该文件则自行创建一个)。
# GitLab.com server
Host gitlab.com
# 如果提示: Unsupported option "rsaauthentication",则可以选择注释掉该行
RSAAuthentication yes
IdentityFile ~/.ssh/private-key-filename-01
# Private GitLab server
Host gitlab.company.com
RSAAuthentication yes
IdentityFile ~/.ssh/private-key-filename
# GitHub使用非默认密钥对:
Host github.com
RSAAuthentication yes
# 也可以使用公钥
IdentityFile ~/.ssh/FDGitHub_rsa.pub
- 配置多个账户
为同一服务器配置不同账户,比如说你在coding上有两个账户,那么可以这样在config文件中配置:
# coding
Host git.coding.net
User your_email@example.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa //默认的私钥
# second
Host git.coding.net
User youre_secondemail@example.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/second_rsa // 生成的第二个私钥
学习链接:SSH key 介绍 - 简书