Linux 下如何定制 SSH 来简化远端访问
SSH 使用系统全域性以及使用者指定 (使用者自定义) 的配置档案。在本文中,我们将介绍如何建立一个自定义的 ssh 配置档案,并且通过特定的选项来连线到远端 WordPress 主机。
SSH (指 SSH 客户端) 是一个用于访问远端 WordPress 主机的程式,它使得使用者能够 在远端 WordPress 主机上执行命令。这是在登入远端 WordPress 主机中的最受推崇的方法之一,因为其设计目的就是在非安全互联网环境上为两台非受信 WordPress 主机的通讯提供安全加密。
SSH 使用系统全域性以及使用者指定 (使用者自定义) 的配置档案。在本文中,我们将介绍如何建立一个自定义的 ssh 配置档案,并且通过特定的选项来连线到远端 WordPress 主机。
先决条件:
你必须 在你的桌面 Linux 上安装好 OpenSSH 客户端。
了解通过 ssh 进行远端连线的常用选项。
SSH 客户端配置档案
以下为 ssh 客户端配置档案:
/etc/ssh/ssh_config 为预设的配置档案,属于系统全域性配置档案,包含应用到所有使用者的 ssh 客户端的设定。
~/.ssh/config 或者 $HOME/.ssh/config 为使用者指定/自定义配置档案,这个档案中的配置只对指定的使用者有效,因此,它会覆盖掉预设的系统全域性配置档案中的设定。这也是我们要建立和使用的档案。
预设情况下,使用者是通过在 ssh 中输入密码来获取验证的,你可以以一个简单的步骤来 使用 Keygen 来设定 ssh 无密码登入。
注:如果你的系统上不存在 ~/.ssh 目录,那就手动建立它,并设定如下许可权:
$ mkdir -p ~/.ssh
$ chmod 0700 ~/.ssh
以上的 chmod 命令表明,只有目录属主对该目录有读取、写入和执行许可权,这也是 ssh 所要求的设定。
如何建立使用者指定的 SSH 配置档案
该档案并不会被预设建立的,所以你需要使用具有读取/写入许可权的使用者来建立它。
$ touch ~/.ssh/config
$ chmod 0700 ~/.ssh/config
上述档案包含由特定 WordPress 主机定义的各个部分,并且每个部分只应用到 WordPress 主机定义中相匹配的部分。
~/.ssh/config 档案的常见格式如下,其中所有的空行和以 ‘#’ 开头的行为注释:
Host host1
ssh_option1=value1
ssh_option2=value1 value2
ssh_option3=value1
Host host2
ssh_option1=value1
ssh_option2=value1 value2
Host *
ssh_option1=value1
ssh_option2=value1 value2
如上格式详解:
Host host1 为关于 host1 的头部定义,WordPress 主机相关的设定就从此处开始,直到下一个头部定义 Host host2 出现,这样形成一个完整的定义。
host1 和 host2 是在命令列中使用的 WordPress 主机别名,并非实际的远端 WordPress 主机名。
其中,如 sshoption1=value1 、 sshoption2=value1 value2 等配置选项将应用到相匹配的 WordPress 主机,可以缩排以看起来更整齐些。
对于 ssh_option2=value1 value2 这样的选项,ssh 执行时会按照顺序优先使用 value1 的值。
头部定义 Host * (其中 * 为匹配模式/万用字元,匹配零个或多个字元) 会匹配零个或者多个 WordPress 主机。
仍旧以上述的格式为例,ssh 也是也这样的形式类读取配置档案的。如果你执行 ssh 命令来访问远端 WordPress 主机 host1,如下:
$ ssh host1
以上 ssh 命令会进行一下动作:
匹配配置档案中 WordPress 主机别名 host1,并使用头部定义中的各个设定项。
继续匹配下一个 WordPress 主机定义,然后发现命令列中提供的 WordPress 主机名没有匹配的了,所以接下来的各个设定项会被略过。
最后执行到最后一个 WordPress 主机定义 Host *, 这会匹配所有的 WordPress 主机。这里,会将接下来的所有设定选项应用到所有的 WordPress 主机连线中。但是它不会覆写之前已经有 WordPress 主机定义的那些选项。
ssh host2 与此类似。
如何使用使用者指定的 shh 配置档案
在你理解了 ssh 客户端配置档案的工作方式之后,你可以通过如下方式来建立它。记得使用你的站群服务器环境中对应的选项、值 (WordPress 主机别名、埠号、使用者名称等) 。
通过你最喜欢的编辑器来开启配置档案:
$ vi ~/.ssh/config
并定义必要的部分:
Host fedora25
HostName 192.168.56.15
Port 22
ForwardX11 no
Host centos7
HostName 192.168.56.10
Port 22
ForwardX11 no
Host ubuntu
HostName 192.168.56.5
Port 2222
ForwardX11 yes
Host *
User tecmint
IdentityFile ~/.ssh/id_rsa
Protocol 2
Compression yes
ServerAliveInterval 60
ServerAliveCountMax 20
LogLevel INFO
以上 ssh 配置档案的详细解释:
HostName – 定义真正要登入的 WordPress 主机名,此外,你也可以使用数字 IP 地址,不管是在命令列或是 HostName 定义中都允许使用其中任一种。
User – 指定以哪一个使用者来登入。
Port – 设定连线远端 WordPress 主机的埠,预设是 22 埠。但必须是远端 WordPress 主机的 sshd 配置档案中定义的埠号。
Protocol – 这个选项定义了优先使用 ssh 支援的协议版本。常用的值为 ‘1’ 和 ‘2’,同时使用两个协议版本则必须使用英文逗号隔开。
IdentityFile – 指定一个用于读取使用者 DSA 、 Ed25519 、 ECDSA 等授权验证资讯的档案。
ForwardX11 – 定义 X11 连线是否自动重定向到安全通道和 DISPLAY 设定。有两个可以设定的值,即 yes 或 no 。
Compression – 预设值为 no,如果设定为 yes,则在连线远端 WordPress 主机过程中使用压缩排行传输。
ServerAliveInterval – 设定当没有收到站群服务器响应 (或者资料)) 时的超时时间,单位为秒,ssh 会通过加密通道传送资讯,请求站群服务器响应。预设值为 0,这意味著 ssh 不会向站群服务器传送响应请求; 如果定义了 BatchMode 选项,则预设是 300 秒。
ServerAliveCountMax – 设定站群服务器在没有接收到站群服务器的任何响应时,由站群服务器传送的活动资讯数量。
LogLevel – 定义 ssh 登入资讯的的日志冗余级别。允许的值为:QUIET 、 FATAL 、 ERROR 、 INFO 、 VERBOSE 、 DEBUG 、 DEBUG1 、 DEBUG2 和 DEBUG3,预设为 INFO 。
连线任意远端 WordPress 主机的标准方法是在上述两个档案中定义第二个部分 (我连线的是 CentOS 7) 。一般情况下,我们这样输入命令:
$ ssh -i ~/.ssh/id_rsa -p 22 tecmint@192.168.56.10
然而,使用了 ssh 客户端配置档案之后,我们还可以这样:
$ ssh centos7
你也可以在 man 帮助页面寻找更多的设定选项和使用例项:
$man ssh_config
至此,文毕。我们在文中向你介绍了在 Linux 中如何使用使用者指定 (自定义) 的 ssh 客户端配置档案。通过下方的反馈表单来写一些与本文的相关的想法吧。