什么是SSH
- SSH(Secure Shell, 安全外壳协议)是一种提供安全性的网络协议。进行远程登录或文件传输的方式
中间人攻击: 利用DNS欺骗和IP欺骗,冒充服务器和你之间的数据传送过程
SSH协议通过网络数据进行加密验证,为传统的远程登录: Telenet、FTP、Pop提供更为安全的加密协议
SSH端口
SSH应用于STelnet,SFTP以及SCP时默认SSH;22/80端口号。SSH端口支持修改, SSH服务会重新侦听新端口
安全验证
SSH采用公钥加密技术来验证远程主机,以及(必要时)允许远程主机验证用户。
ssh客户端(ssh) ssh服务端(sshd)
+----------+ +---------+
| | | |
| | | |
| | | |
| | | |
+---+---+--+ +-+---+---+
| | | |
| | | |
| +----------------------------+ |
| |
| ssh加密了的TCP通信 |
+------------------------------------+
SSH连接
OpenSSH
对于OpenSSH客户端(Linux默认安装), 主机(公网ip)与某一个服务器进行远程连接
OpenSSH(OpenBSD Secure Shell)是一套使用ssh协议, 提供加密通讯会话的程序
SSH KEY
SSH密钥简单来说: 让你方便的登录SSH服务器, 而无需密码
——SSH利用SSH Key来进行前面提到的基于密钥的安全验证
使用步骤—主机与Github服务器
ssh-keygen -t rsa -C '[email protected]' ——生成密钥对(OpenSSH也可生成
cat ~/.ssh/id_rsa.pub ——查看配置公钥文件
SHA256:xxxbg6kXUpJWGlxxxIGOCspRomTxdCARLxxx6E5SY8 ——sha256哈希值格式
git使用https协议,每次pull, push都要输入密码,所以使用ssh密钥(也可使用Github令牌)
1.在客户端生成SSH key(密钥对:公钥和私钥)——终端操作
2.在服务端的配置文件中加入你的公钥。(比如我们需要在GitHub中粘贴你的公钥)
- 主机与Linux服务器
mv id_rsa_2048.pub ~/.ssh --生成的密钥对文件
cd ~/.ssh/authorized_keys
cat id_rsa_2048.pub >> ~/.ssh/authorized_keys --密钥文件追加
附笔
id_rsa:本机(服务端)的私钥文件。
id_rsa.pub:本机(服务端)的公钥文件。
authorized_key:存放想要通过公私钥校验方式连接本机(服务端)的客户端公钥。
known_hosts:本地的客户端存放成功连接本机(服务端)的服务端信息,服务端信息变更的话会再次询问,是否连接。(即存放曾经连接成功过的远程服务器信息)
服务器 : 被用来设计处理的业务应用(如网络和系统管理,数据库管理和Web服务的电脑(不限于微机,linux系统
主机 : host 可以托管相对于其他计算机有用的应用程序
本地 : local/localhost 是指用户或特定软件正在使用的计算机
远程 : 远程计算机指不再你面前, 客观上没有实际使用的面对面计算机
