PRF:20170202 How to Configure Custom SSH Connections to Simplify Remote Access.md

@GHLandy
This commit is contained in:
wxy 2017-03-14 22:12:22 +08:00
parent e45d421c69
commit 60925eb902

View File

@ -1,36 +1,36 @@
如何配合自定义的 SSH 来简化远程访问
如何定制 SSH 来简化远程访问
===================
SSH (SSH 客户端) 是一个用于访问远程主机的程序,它使得用户能够 [在远程主机上执行命令][2]。这是在登录远程主机中的最受推崇的方法之一,因为其设计目的就是为两台不可信任主机通过不安全网络环境的通信提供安全加密。
SSH (指 SSH 客户端)是一个用于访问远程主机的程序,它使得用户能够 [在远程主机上执行命令][2]。这是在登录远程主机中的最受推崇的方法之一,因为其设计目的就是在非安全网络环境上为两台非受信主机的通信提供安全加密。
SSH 使用系统全局以及用户指定 (用户自定义) 的配置文件。在本文中,我们将介绍如何创建一个自定义的 ssh 配置文件,并且通过确切的选项来链接到远程主机。
SSH 使用系统全局以及用户指定(用户自定义)的配置文件。在本文中,我们将介绍如何创建一个自定义的 ssh 配置文件,并且通过特定的选项来连接到远程主机。
#### 先决条件:
### 先决条件:
1. 你必须 [在你的桌面 Linux 上安装好 OpenSSH 客户端][1]。
2. 理解通过 ssh 进行远程连接的常用选项
2. 了解通过 ssh 进行远程连接的常用选项。
#### SSH 客户端配置文件
### SSH 客户端配置文件
以下为 ssh 客户端配置文件:
1. `/etc/ssh/ssh_config` 为默认的配置文件,属于系统全局配置文件,包含应用到所有用户的 ssh 客户端的设置。
2. `~/.ssh/config` 或者 `$HOME/.ssh/config` 为用户指定/自定义配置文件,这个文件中的配置只对指定的用户有效,因此,它会覆盖掉默认的系统全局配置文件中的设置。这也是我们要创建和使用的文件。
2. `~/.ssh/config` 或者 `$HOME/.ssh/config` 为用户指定/自定义配置文件,这个文件中的配置只对指定的用户有效,因此,它会覆盖掉默认的系统全局配置文件中的设置。这也是我们要创建和使用的文件。
默认情况下,用户是通过在 ssh 中输入密码来获取验证的,你可以以一个简单的步骤来 [使用 Keygen 来设置 ssh 无密码登录][3]。
默认情况下,用户是通过在 ssh 中输入密码来获取验证的,你可以以一个简单的步骤来 [使用 Keygen 来设置 ssh 无密码登录][3]。
注:如果你的系统上不存在 `~/.ssh`,那就手动创建它,并设置如下权限:
注:如果你的系统上不存在 `~/.ssh` 目录,那就手动创建它,并设置如下权限:
```
$ mkdir -p ~/.ssh
$ chmod 0700 ~/.ssh
```
以上的 chmod 命令表明,只有目录属主对该目录有读取、写入和执行权限,这也是 ssh 所要求的设置。
以上的 `chmod` 命令表明,只有目录属主对该目录有读取、写入和执行权限,这也是 ssh 所要求的设置。
### 如何创建用户指定的 SSH 配置文件
该文件并不会被默认创建的,所以你需要使用具有读取/写入权限的用来创建它。
该文件并不会被默认创建的,所以你需要使用具有读取/写入权限的用来创建它。
```
$ touch ~/.ssh/config
@ -56,13 +56,13 @@ ssh_option2=value1 value2
如上格式详解:
1. Host host1 为关于 host1 定义的头部,主机定义就从此处开始,直到下一个定义头部 Host host2 出现,这样形成一个完整的定义。
2. host1 和 host2 是命令行中使用的主机别名,并非实际的远程主机名。
3. 其中,如 ssh_option1=value1、ssh_option2=value1 value2 等配置选项将应用到相匹配和想要以一定格式组织的主机。
1. `Host host1` 为关于 host1 的头部定义,主机相关的设置就从此处开始,直到下一个头部定义 `Host host2` 出现,这样形成一个完整的定义。
2. host1 和 host2 是命令行中使用的主机别名,并非实际的远程主机名。
3. 其中,如 ssh_option1=value1、ssh_option2=value1 value2 等配置选项将应用到相匹配的主机,可以缩进以看起来更整齐些
4. 对于 ssh_option2=value1 value2 这样的选项ssh 执行时会按照顺序优先使用 value1 的值。
5. Host * (其中 `*` 为匹配模式/通配符,匹配零个或多个字符) 定义头部会匹配零个或者多个主机。
5. 头部定义 `Host *` (其中 `*` 为匹配模式/通配符,匹配零个或多个字符) 会匹配零个或者多个主机。
仍旧以上述的格式为例ssh 也是也这样的形式类读取配置文件的。如果你执行 shh 命令来访问远程主机 host1如下
仍旧以上述的格式为例ssh 也是也这样的形式类读取配置文件的。如果你执行 ssh 命令来访问远程主机 host1如下
```
$ ssh host1
@ -70,9 +70,9 @@ $ ssh host1
以上 ssh 命令会进行一下动作:
1. 匹配配置文件中主机别名 host1并使用定义头部中的各个设置项。
2. 继续匹配下一个 host 定义,通过查找命令行中的名称发现不匹配,所有接下来的各个设置项会被略过。
3. 最后执行到最后一个 host 定义,这会匹配所有的主机。这里,会将接下来的所有设置选项应用到所有的主机连接中。但是它不会覆写之前已经有 host 定义的那些选项。
1. 匹配配置文件中主机别名 host1并使用头部定义中的各个设置项。
2. 继续匹配下一个主机定义,然后发现命令行中提供的主机名没有匹配的了,所以接下来的各个设置项会被略过。
3. 最后执行到最后一个主机定义 `Host *` 这会匹配所有的主机。这里,会将接下来的所有设置选项应用到所有的主机连接中。但是它不会覆写之前已经有主机定义的那些选项。
4. ssh host2 与此类似。
### 如何使用用户指定的 shh 配置文件
@ -85,7 +85,7 @@ $ ssh host1
$ vi ~/.ssh/config
```
并定必要的部分:
并定必要的部分:
```
Host fedora25
@ -112,18 +112,18 @@ LogLevel INFO
以上 ssh 配置文件的详细解释:
1. HostName - 定义真正要登录的主机名,此外,你也可以使用数字 IP 地址,不管是在命令行或是 HostName 定义中都运行使用其中任一种。
2. User  指定以哪一个用户来登录。
3. Port  设置连接远程主机的端口,默认是 22 端口。但必须是远程主机的 sshd 配置文件中定义的端口号。
4. Protocol  这个选项定义了优先使用 ssh 支持的协议版本。常用的值为 1  2同时使用两个协议版本则必须使用都厚隔开。
5. IdentityFile  指定读取用户 DSA、Ed25519、ECDSA 等授权验证信息的文件。
6. ForwardX11  定义 X11 链接是否自动重定向到安全通道和 DISPLAY 设置。这两个可以设置的值,即 “yes”  “no”
7. Compression  默认值为 “no”如果设置为 “yes”则在连接远程主机过程中使用压缩进程传输。
8. ServerAliveInterval  设置当不在收到服务器响应 (或者数据) 时的过期时间单位为秒ssh 会通过加密信道向发送信息,请求服务器响应。默认值为 0这意味着 ssh 不会向服务器发送响应请求,如果 Batch 选项有定义,则默认是 300s
9. ServerAliveCountMax  设置服务器活动信息的数值,以便在 ssh 在没有收到服务器响应的情况下发送信息
10. LogLevel  定义 ssh 登录信息的的日志冗余级别。允许的值为:QUIET、 FATAL、ERROR、INFO、VERBOSE、DEBUG、DEBUG1、DEBUG2 和 DEBUG3默认为 INFO
1. `HostName` - 定义真正要登录的主机名,此外,你也可以使用数字 IP 地址,不管是在命令行或是 HostName 定义中都允许使用其中任一种。
2. `User`  指定以哪一个用户来登录。
3. `Port`  设置连接远程主机的端口,默认是 22 端口。但必须是远程主机的 sshd 配置文件中定义的端口号。
4. `Protocol`  这个选项定义了优先使用 ssh 支持的协议版本。常用的值为 1  2同时使用两个协议版本则必须使用英文逗号隔开。
5. `IdentityFile`  指定一个用于读取用户 DSA、Ed25519、ECDSA 等授权验证信息的文件。
6. `ForwardX11`  定义 X11 连接是否自动重定向到安全通道和 DISPLAY 设置。有两个可以设置的值,即 `yes` 或 `no`
7. `Compression`  默认值为 `no`,如果设置为 `yes`,则在连接远程主机过程中使用压缩进行传输。
8. `ServerAliveInterval`  设置当没有收到服务器响应 (或者数据)时的超时时间单位为秒ssh 会通过加密信道发送信息,请求服务器响应。默认值为 `0`,这意味着 ssh 不会向服务器发送响应请求;如果定义了 BatchMode 选项,则默认是 300 秒
9. `ServerAliveCountMax`  设置服务器在没有接收到服务器的任何响应时,由服务器发送的活动信息数量
10. `LogLevel`  定义 ssh 登录信息的的日志冗余级别。允许的值为:`QUIET`、`FATAL`、`ERROR`、`INFO`、`VERBOSE`、`DEBUG`、`DEBUG1`、`DEBUG2` 和 `DEBUG3`,默认为 `INFO`
以上,连接任意远程主机的标准方法, 我连接的是 CentOS 7即定义的第二部分我们可以简单的输入如下命令:
连接任意远程主机的标准方法是在上述两个文件中定义第二个部分(我连接的是 CentOS 7。一般情况下我们这样输入命令:
```
$ ssh -i ~/.ssh/id_rsa -p 22 tecmint@192.168.56.10
@ -141,7 +141,7 @@ $ ssh centos7
$man ssh_config
```
至此,文毕。我们在文中想你介绍了在 Linux 中如何如何使用用户指定 (自定义) 的 ssh 客户端配置文件。通过下方的反馈表单来写一些与本文的相关的想法吧。
至此,文毕。我们在文中向你介绍了在 Linux 中如何使用用户指定 (自定义) 的 ssh 客户端配置文件。通过下方的反馈表单来写一些与本文的相关的想法吧。
------------------------------------------------
@ -161,7 +161,7 @@ via: http://www.tecmint.com/configure-custom-ssh-connection-in-linux/
作者:[Aaron Kili][a]
译者:[GHLandy](https://github.com/GHLandy)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出