新手建站教程

① 域名 -> ② 服务器 -> ③ 解析 -> ④ CMS -> ⑤ CDN

SSH是什么?

安全外壳协议(Secure Shell Protocol,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中建立安全隧道来实现SSH客户端与服务器之间的连接。SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令。

在设计上,SSH是Telnet和非安全shell的替代品。Telnet和Berkeley rlogin、rsh、rexec等协议采用明文传输,使用不可靠的密码,容易遭到监听、嗅探和中间人攻击。SSH旨在保证非安全网络环境(例如互联网)中信息加密完整可靠。

使用SSH连接到你的服务器

准备工作

为了建立 SSH 远程连接,需要两个组件:客户端和相应服务端组件。SSH 客户端是我们安装在本地电脑的软件;而服务端,也需有一个称为 SSH 守护程序的组件,它不断地侦听特定的 TCP/IP 端口以获取可能的客户端连接请求。 一旦客户端发起连接,SSH 守护进程将以软件和它支持的协议版本作为响应,两者将交换它们的标识数据。如果提供的凭据正确,SSH 会为适当的环境创建一个新会话。

  • 安装SSH客户端

    下载并安装SSH客户端,您也可以使用系统自带的SSH客户端(如果有)。Windows用户推荐使用 XShell ,您可以在 此处 获取家庭或学校免费授权。

  • 检查SSH服务端

    Linux系统检查ssh服务端是否可用的命令有好几种,比如直接看是否有ssh进程在运行:

    ps -ef | grep ssh

    输出结果有sshd进程在运行,说明ssh服务端可用:

    -bash-4.3$ ps -e|grep ssh
    336 ? 00:00:00 sshd
    358 ? 00:00:00 sshd
    1202 ? 00:00:00 sshd
    1978 ? 00:00:00 sshd
    1980 ? 00:00:00 sshd
    2710 ? 00:00:00 sshd
    2744 ? 00:00:00 sshd
    2829 ? 00:00:00 sshd
    2831 ? 00:00:00 sshd
    9864 ? 00:00:00 sshd
    9893 ? 00:00:02 sshd

方式一:通过密码连接

典型用法,只需输入以下命令即可连接远程服务器。

ssh username@host

ssh连接默认端口是22,如果本地机用户名和远程机用户名一致,可以省略用户名。

您也可以指定连接端口:

ssh -p port user@host

如果是第一次连接运行后会得到以下提示,正常输入yes,然后输入账号密码即可连接成功:

The authenticity of host 'xx.xx.xx.xx' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxx.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Last login: ddd MMM dd hr:mi:se yyyy from xx.xx.xx.xx

方式二:通过公钥连接

公钥登录的原理,是先在本地机器上生成一对公钥和私钥,然后手动把公钥上传到远程服务器。这样每次登录时,远程主机会向用户发送一段随机字符串,而用户会用自己的私钥对这段随机字符串进行加密,然后把加密后的字符串发送给远程主机,远程主机会用用户的公钥对这段字符串进行解密,如果解密后的字符串和远程主机发送的随机字符串一致,那么就认为用户是合法的,允许登录。

SSH支持多种用于身份验证密钥的公钥算法, 包括RSADSAECDSAED25519等,其中RSA算法是最常用的,因为它是SSH协议的默认算法,所以我们这里以RSA算法为例来生成密钥,并配置免密码远程连接。ssh-keygen是为SSH创建新的身份验证密钥对的工具。此类密钥对用于自动登录、单点登录和验证主机,常用参数定义如下:

  • -t:指定密钥类型
  • -b:指定密钥长度

具体步骤如下:

  1. 本地终端运行:

    ssh-keygen -t rsa -b 4096

    生成密钥对,运行后会提示输入密钥保存路径,直接回车即可,保存在默认路径下,然后会提示输入密钥密码,这里我们不设置密码,直接回车即可,然后会提示再次输入密码,这里也不设置密码,直接回车即可,最后会提示密钥生成成功。

    ~/.ssh/目录下,会新生成两个文件:id_rsa.pubid_rsa,分别是公钥和私钥文件。

  2. 将本地.ssh目录下的id_rsa.pub文件内容添加到目标服务器的~/.ssh/authorized_keys目录中(若没有则自行创建).然后再创建authorized_keys文件,添加文件内容。具体操作命令如下:

    # 1.本地终端运行命令
    cat ~/.ssh/id_rsa.pub # 查看本地公钥文件内容,并复制
    # 2.远程终端运行命令,有authorized_keys文件则跳过
    mkdir -p ~/.ssh # 创建.ssh目录
    touch ~/.ssh/authorized_keys # 创建authorized_keys文件
    # 3.然后将本地公钥文件内容粘贴到authorized_keys文件中,保存退出

什么是域名解析?

域名系统(英语:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。

实际访问网站时,确定从哪台服务器获取网页,对于计算机来说是通过IP地址实现的。由于IP地址是数字形式,为了便于人们记忆,所以使用了域名和网址机制。而域名解析,就是把域名和服务器进行绑定的过程。

设置域名解析

域名解析的配置分为三个部分内容(不分先后):

  • 给域名设置DNS服务器(在域名提供商网站中进行)
  • 在DNS设置域名解析(在DNS服务提供商网站中进行)
  • 在服务器空间设置绑定域名(在服务器空间面板中进行)

设置DNS服务器

大多数域名厂商都提供免费的DNS解析服务,您可以直接使用域名厂商提供的服务,或者通过设置NS记录更换DNS服务器。

设置DNS记录

在DNS解析服务处,点击“添加DNS记录”,设置DNS记录类型,记录内容,以及TTL。

通常DNS记录设置后,需要等待几分钟直到全球的DNS服务器刷新后才会生效。

DNS记录常见类型及介绍

  • A记录

    A记录是最常见的DNS记录形式。一个A记录指向一个网站或域名的IP地址。A记录的主要应用是用于IP地址的查询。网络浏览器可以通过A记录加载一个使用域名的网页。

    例如,您可以将您的域名www.example.com,通过A记录指向其主机服务器的IP地址192.168.0.1

  • AAAA记录

    AAAA记录是IPv6协议的一部分,这意味着它们被用来为互联网上的主机分配IPv6地址。它们可以用来为主机名(计算机或设备的名称)分配一个IPv6地址,或者为IPv6地址分配一个主机名。AAAA与A记录类似,只是它存储的是较新的IPv6地址,而不是IPv4。每一个使用IPv6的互联网网站都需要它。

    AAAA记录指向IPv6地址,如:2001:0db8:85a3:0000:0000:8a2e:0370:7334

  • CNAME记录

    CNAME记录是用来为你的域名创建别名的。例如,如果你有一个网站在www.example.com,你可以使用CNAME记录来设置一个别名,如果有人输入www.example.com/blog,他们实际上会被带到blog.example.com,而不是被带到根域本身。

    你也可以使用CNAME记录,在你的网站或应用程序的不同版本之间或同一网站的不同子域之间设置重定向。 例如,将域名www.example.net通过CNAME记录指向www.example.com

  • 名称服务器(NS)记录

    这条记录确定了一个域名的名称服务器。当你向你的帐户添加一个新的域名时,它被添加到区域文件中,在为该域名创建任何其他记录之前,必须正确设置。

    它们告诉互联网上的其他人你在用什么名称服务器来解析域名,使它们成为几乎每一个域名系统(DNS)配置的重要组成部分。NS记录通过提供一个权威的DNS信息来源,帮助用户在网络上找到他们的方式。下面是一个NS记录的例子。

    example.com NS ns1.example.com
  • 邮件交换(MX)记录

    MX记录指定了负责接受发送到域名的电子邮件的邮件服务器。如果你想通过你的域名和指向A记录或AAAA记录来接收电子邮件,这种记录是必需的,它确定了你的邮件服务器所在的一个或多个IP地址。下面是一个谷歌邮件服务器的MX记录例子。

    IN MX 10 aspmx.l.google.com
  • TXT记录
    它是一种 DNS 记录,允许您以文本格式添加有关域名的附加信息。它们通常用于电子邮件安全和身份验证实践中。TXT 记录的目的是指示接收服务器如何验证邮件服务器的源信息。邮件服务器用来证明一封邮件的有效性的主要方法,特别是用于SPF认证的方法,是SPF TXT记录。

TTL:TTL是DNS服务器上刷新记录的时间间隔,如果需要频繁更改IP,记录时间可以短一些,否则应该设置长一点,这样一定程度上会加快访问速度。不了解的话,直接用默认值即可。

服务器绑定域名

登录服务器面板(没有面板的可以去安装 宝塔面板1Panel ),选择“添加网站”。添加网站的时候,会让你选择站点根目录(建议在服务器根目录下建一个子文件夹作为站点根目录),然后绑定你的域名。

不建议使用宝塔面板默认的www目录作为站点根目录。

参考资料

维基百科:Secure Shell

知乎:介绍3种ssh远程连接的方式

维基百科:域名系统

PowerDMARC:什么是DNS记录?| 8种主要的DNS记录类型