SSH

这是讲解关于 SSH 服务的一些信息

前言: SSH介绍

SSH 是一种网络协议,用于计算机之间的加密登陆

一、中间人攻击

SSH 的使用过程:

  1. 远程主机收到用户登陆请求,将自己公钥发给用户

  2. 用户使用公钥将登录密码加密后,发送给远程主机

  3. 远程主机使用自己的私钥,解密登陆密码,如果密码正确,就同意用户登录

如果在实施过程中,有人截获了登录请求,然后冒充远程主机,将伪造的公钥发送给用户,用户无法辨别真伪,当用户发送了密码后,攻击者就可以得到登录密码

二、 SSH 文件结构

  1. id_rsa

    这是 SSH 的私钥,与公钥是一堆的密钥对,用于连接其他服务器使用

  2. id_rsa.pub

    这是 SSH 的公钥,将 A 主机的 id_rsa.pub 文件拷贝到 B 主机的 authorized_keys 文件中,这样 A 主机就可能不通过密码连接 B 主机

  3. authorized_keys (授权文件)

    实现真正无密码连接,即为授权文件,当把master的公钥添加到 authorized_keys 文件中后,下次连接直接输入ssh master即可,不需要再次输入密码

    1. 单向:将 A 主机的 id_rsa.pub 文件拷贝到 B 主机的 authorized_keys 就可以使 A 无密码连接 B 主机

    2. 双向:将 A、B 主机的 id_rsa.pub 文件都写入彼此 authorized_keys 中就可以实现双向登录

  4. known_hosts ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。

一、基本用法

1. SSH 远程登录 -- 口令

2. SSH 远程登录 -- 公钥

公钥登录定义: 用户将自己的公钥储存在远程主机上,登录时远程主机就会向用户发送一段随机字符串,用户使用自己的公钥进行加密后,在发送回来,远程主机使用事先储存的私钥进行解密,如果成功就证明用户是可信的

3. 持久连接 SSH

如果使用 iTerm2 连接 SSH 时,要求不断线需要做以下配置

二、 SSH 远程操作

1. SSH 数据传输

2. scp 跨机远程拷贝

scp 用于在 Linux 下进行远程拷贝文件的命令,传输的时候加密其内容

3. SSH 端口操作

1. 绑定本地端口

2. 本地端口转发

假定host1是本地主机,host2是远程主机。由于种种原因,这两台主机之间无法连通。但是,另外还有一台host3,可以同时连通前面两台主机。因此,很自然的想法就是,通过host3,将host1连上host2

3. 远程端口转发

host1与host2之间无法连通,必须借助host3转发。但是,特殊情况出现了,host3是一台内网机器,它可以连接外网的host1,但是反过来就不行,外网的host1连不上内网的host3。解决办法是,既然host3可以连host1,那么就从host3上建立与host1的SSH连接,然后在host1上使用这条连接就可以了。

常用命令

参考文章

最后更新于

这有帮助吗?