如何配置自定义 SSH 连接以简化远程访问
SSH(SSH客户端)是一个用于远程访问机器的程序,它使用户能够在远程主机上执行命令。它是最推荐的登录远程主机的方法之一,因为它旨在通过不安全的网络在两个不受信任的主机之间提供安全的加密通信。
SSH 使用系统范围的配置文件和用户特定的(自定义)配置文件。在本教程中,我们将解释如何创建自定义 ssh 配置文件并使用某些选项连接到远程主机。
要求:
- 您必须在 Linux 桌面上安装 OpenSSH 客户端。
- 了解通过 ssh 进行远程连接的常用选项。
SSH 客户端配置文件
以下是 ssh 客户端配置文件的位置:
/etc/ssh/ssh_config
– 这是默认的系统范围配置文件。它包含适用于 ssh 客户端计算机的所有用户的设置。~/.ssh/config
或$HOME/.ssh/config
– 是用户特定/自定义配置文件。它具有适用于特定用户的配置。因此,它会覆盖系统范围配置文件中的默认设置。这是我们将创建和使用的文件。
默认情况下,用户使用密码在 ssh 中进行身份验证,但是,您可以使用 ssh keygen 通过 5 个简单步骤设置 ssh 无密码登录。
注意:如果您的桌面系统上不存在目录~/.ssh
,请使用以下权限创建它。
mkdir -p ~/.ssh
chmod 0700 ~/.ssh
上面的chmod命令意味着只有用户才能按照ssh设置的要求对该目录拥有读、写和执行权限。
如何创建用户特定的 SSH 配置文件
默认情况下通常不会创建此文件,因此您需要仅为用户创建具有读/写权限的文件。
touch ~/.ssh/config
chmod 0700 ~/.ssh/config
上述文件包含由主机规范定义的部分,并且该部分仅应用于与规范中设置的模式之一匹配的主机。
~/.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 的标头定义,这是主机规范开始的地方,并以下一个标头定义结束,Host host2一个部分。
- host1、host2 只是在命令行上使用的主机别名,它们不是远程主机的实际主机名。
- 配置选项(例如 ssh_option1=value1、ssh_option2=value1 value2)适用于匹配的主机,并且应缩进以便组织良好的格式。
- 对于诸如 ssh_option2=value1 value2 之类的选项,首先考虑值 value1,然后考虑value2。
- 标头定义 Host *(其中
*
是一种模式 - 匹配零个或多个字符的通配符)将匹配零个或多个主机。
仍然考虑上面的格式,这就是 ssh 读取配置文件的方式。如果您执行 ssh 命令来远程访问 host1,如下所示:
ssh host1
上面的 ssh 命令将执行以下操作:
- 匹配配置文件中的主机别名 host1 并应用定义标头 Host host1 下设置的选项。
- 然后移动到下一个主机部分,Host host2,发现命令行上提供的名称不匹配,因此这里不使用任何选项。
- 它继续到最后一部分,Host *,它匹配所有主机。在这里,它将本节中的所有选项应用于主机连接。但它不能覆盖上一节中已使用的选项的任何值。
- 这同样适用于host2。
如何使用用户特定的 SSH 配置文件
一旦您了解了 ssh 客户端配置文件的工作原理,您就可以按如下方式创建它。请记住使用适用于您的服务器环境的选项和值(主机别名、端口号、用户名等)。
使用您喜欢的编辑器打开配置文件:
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 – 定义要登录的真实主机名,或者,您可以使用数字 IP 地址,这也是允许的(在命令行和 HostName 规范中) 。
- 用户 – 指定登录的用户。
- 端口 – 设置连接远程主机的端口号,默认为22。使用远程主机的 sshd 配置文件中配置的端口号。
- 协议 – 此选项定义 ssh 应按优先顺序支持的协议版本。通常的值为'1'和'2',多个版本必须以逗号分隔。
- IdentityFile – 指定从中读取用户的 DSA、Ed25519、RSA 或 ECDSA 身份验证身份的文件。
- ForwardX11 – 定义 X11 连接是否将通过安全通道和 DISPLAY 设置自动重定向。它有两个可能的值“是”或“否”。
- 压缩 – 用于在远程连接期间设置压缩,值为“yes”。默认为“否”。
- ServerAliveInterval – 设置超时间隔(以秒为单位),在此之后如果没有从服务器收到响应(或数据),ssh 将通过加密通道发送消息以请求服务器响应。默认值为0,表示不会向服务器发送消息;如果已定义 BatchMode 选项,则默认值为300。
- ServerAliveCountMax – 设置在 ssh 未收到服务器任何响应的情况下可以发送的服务器活动消息的数量。
- LogLevel – 定义从 ssh 记录消息时使用的详细级别。允许的值包括:QUIET、FATAL、ERROR、INFO、VERBOSE、DEBUG、DEBUG1、DEBUG2 和 DEBUG3。默认是INFO。
连接到任何远程 Linux 主机(CentOS 7 – 在我的例子中)的标准方法,在上面配置文件的第二部分中定义,我们通常会键入以下命令:
ssh -i ~/.ssh/id_rsa -p 22 [email
但是,通过使用 ssh 客户端配置文件,我们可以简单地键入以下命令:
ssh centos7
您可以在 ssh 客户端配置手册页中找到更多选项和使用示例:
$man ssh_config
现在就这样,在本指南中,我们向您解释了如何在 Linux 中使用特定于用户的(自定义)ssh 客户端配置文件。使用下面的反馈表给我们回复有关本文的信息。