什么是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 是指用户或特定软件正在使用的计算机

远程 : 远程计算机指不再你面前, 客观上没有实际使用的面对面计算机

宝塔面板

软件