linux自定义SSH连接以简化远程访问
VSole2021-11-02 08:30:18
SSH
(SSH client
) 是一个远程访问服务器的程序,它使用户能够在远程主机上执行命令。它是最推荐的远程登录主机的方法之一,因为它旨在通过不安全的网络在两个不受信任的主机之间提供安全的加密通信。
SSH
使用系统范围和用户特定(自定义)配置文件。在本教程中,我们将解释如何创建自定义ssh配置文件并使用某些选项连接到远程主机。
SSH 客户端配置文件
ssh客户端配置文件的位置:
/etc/ssh/ssh_config
这是默认的、系统范围的配置文件。它包含适用于ssh客户端计算机的所有用户的设置。~/.ssh/config
或$HOME/.ssh/config
是特定于用户的自定义配置文件。它具有适用于特定用户的配置。因此,它会覆盖系统范围配置文件中的默认设置。这是我们将创建和使用的文件。
默认情况下,用户在ssh中使用密码进行身份验证,但是,你可以通过5个简单的步骤使用ssh keygen设置ssh无密码登录。
Note
:如果~/.ssh
在家目录不存在,需要创建一下。
$ mkdir -p ~/.ssh $ chmod 0700 ~/.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
host1
,host2
:只是在命令行上使用的主机别名,它们不是远程主机的实际主机名。- 对于一个选项,例如
ssh_option2=value1 value2
, 首先用value1
,然后用value2
. Host *
(其中*
是模式 - 匹配零个或多个字符的通配符)将匹配零个或多个主机。
执行ssh命令远程访问host1
:
$ ssh host1
上面的ssh命令将执行以下操作:
- 匹配
host1
配置段 - 继续尝试匹配
host2
, 但是host1
不能匹配上host2
,因此此处未使用任何选项。 - 进入最后一项,
Host *
,匹配所有主机。这里是一些通用的配置。但它不能覆盖上一项中已经使用的任何选项值。
如何使用用户特定的SSH配置文件
了解ssh客户端配置文件的工作原理,你就可以按如下方式创建它。
编辑配置文件:
$ vi ~/.ssh/config Host fedora25 HostName 192.168.1.111 Port 22 ForwardX11 no Host centos7 HostName 192.168.1.112 Port 22 ForwardX11 no Host ubuntu HostName 192.168.1.113 Port 23 ForwardX11 yes Host * User rumenz IdentityFile ~/.ssh/id_rsa Protocol 2 Compression yes ServerAliveInterval 60 ServerAliveCountMax 20 LogLevel INFO
以上ssh配置选项的详细说明。
HostName
– 定义要登录的真实主机名,或者,你可以使用数字IP地址User
– 指定登录的用户。Port
– 设置远程主机上连接的端口号,默认为22
. 使用远程主机的 sshd 配置文件中配置的端口号。Protocol
– 此选项按优先顺序定义 ssh 应支持的协议版本。通常的值是1
和2
, 多个版本必须以逗号分隔。IdentityFile
– 指定从中读取用户的DSA、Ed25519、RSA 或 ECDSA 认证身份的文件。ForwardX11
– 定义X11连接是否将通过安全通道和DISPLAY集自动重定向。它有两个可能的值yes
或者no
.Compression
– 它用于在与远程连接期间设置压缩。默认是no
.ServerAliveInterval
– 以秒为单位设置超时间隔,如果没有收到来自服务器的响应(或数据),ssh将通过加密通道发送消息以请求服务器的响应。默认值为0
,意味着不会向服务器发送消息。ServerAliveCountMax
– 设置可以在ssh未收到服务器任何响应的情况下发送的服务器活动消息的数量。LogLevel
– 定义从ssh记录消息时使用的详细级别。允许的值包括:QUIET、FATAL、ERROR、INFO、VERBOSE、DEBUG、DEBUG1、DEBUG2 和 DEBUG3。默认值为 INFO。
一般我们可以用以下命令链接到远程服务器
$ ssh -i ~/.ssh/id_rsa -p 22 rumenz@192.168.1.112
但是,通过使用ssh客户端配置文件,我们可以简单输入以下命令:
$ ssh centos7
你可以在ssh客户端配置手册页中找到更多选项和用法示例:
$ man ssh_config

VSole
网络安全专家