资讯专栏INFORMATION COLUMN

如何定制 SSH 来简化远程访问服务器

wow_worktile / 3331人阅读

摘要:在本文中,我们将介绍如何创建一个自定义的配置文件,并且通过特定的选项来连接到远程主机。设置服务器在没有接收到服务器的任何响应时,由服务器发送的活动信息数量。

SSH (指 SSH 客户端)是一个用于访问远程主机的程序,它使得用户能够 在远程主机上执行命令。这是在登录远程主机中的最受推崇的方法之一,因为其设计目的就是在非安全网络环境上为两台非受信主机的通信提供安全加密。

SSH 使用系统全局以及用户指定(用户自定义)的配置文件。在本文中,我们将介绍如何创建一个自定义的 ssh 配置文件,并且通过特定的选项来连接到远程主机。

先决条件

你必须在你的桌面 Linux 上安装好 OpenSSH 客户端

了解通过 ssh 进行远程连接的常用选项

SSH 客户端配置文件

以下为 ssh 客户端配置文件:

/etc/ssh/ssh_config 为默认的配置文件,属于系统全局配置文件,包含应用到所有用户的 ssh 客户端的设置。

~/.ssh/config 或者 $HOME/.ssh/config 为用户指定/自定义配置文件,这个文件中的配置只对指定的用户有效,因此,它会覆盖掉默认的系统全局配置文件中的设置。这也是我们要创建和使用的文件。

默认情况下,用户是通过在 ssh 中输入密码来获取验证的,你可以以一个简单的步骤来 使用 Keygen 来设置 ssh 无密码登录[2]。

注:如果你的系统上不存在 ~/.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 是在命令行中使用的主机别名,并非实际的远程主机名。

其中,如 sshoption1=value1sshoption2=value1 value2 等配置选项将应用到相匹配的主机,可以缩进以看起来更整齐些。

对于 ssh_option2=value1 value2 这样的选项,ssh 执行时会按照顺序优先使用 value1 的值。

头部定义 Host * (其中 * 为匹配模式/通配符,匹配零个或多个字符) 会匹配零个或者多个主机。

仍旧以上述的格式为例,ssh 也是也这样的形式类读取配置文件的。如果你执行 ssh 命令来访问远程主机 host1,如下:

$ ssh host1

以上 ssh 命令会进行一下动作:

匹配配置文件中主机别名 host1,并使用头部定义中的各个设置项。

继续匹配下一个主机定义,然后发现命令行中提供的主机名没有匹配的了,所以接下来的各个设置项会被略过。

最后执行到最后一个主机定义 Host *, 这会匹配所有的主机。这里,会将接下来的所有设置选项应用到所有的主机连接中。但是它不会覆写之前已经有主机定义的那些选项。

ssh 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 定义中都允许使用其中任一种。

User – 指定以哪一个用户来登录。

Port – 设置连接远程主机的端口,默认是 22 端口。但必须是远程主机的 sshd 配置文件中定义的端口号。

Protocol – 这个选项定义了优先使用 ssh 支持的协议版本。常用的值为 ‘1’ 和 ‘2’,同时使用两个协议版本则必须使用英文逗号隔开。

IdentityFile – 指定一个用于读取用户 DSA、Ed25519、ECDSA 等授权验证信息的文件。

ForwardX11 – 定义 X11 连接是否自动重定向到安全通道和 DISPLAY 设置。有两个可以设置的值,即 yes 或 no。

Compression – 默认值为 no,如果设置为 yes,则在连接远程主机过程中使用压缩进行传输。

ServerAliveInterval – 设置当没有收到服务器响应 (或者数据))时的超时时间,单位为秒,ssh 会通过加密信道发送信息,请求服务器响应。默认值为 0,这意味着 ssh 不会向服务器发送响应请求;如果定义了 BatchMode 选项,则默认是 300 秒。

ServerAliveCountMax – 设置服务器在没有接收到服务器的任何响应时,由服务器发送的活动信息数量。

LogLevel – 定义 ssh 登录信息的的日志冗余级别。允许的值为:QUIET、FATAL、ERROR、INFO、VERBOSE、DEBUG、DEBUG1、DEBUG2和 DEBUG3,默认为 INFO。

连接任意远程主机的标准方法是在上述两个文件中定义第二个部分(我连接的是 CentOS 7)。一般情况下,我们这样输入命令:

$ ssh -i ~/.ssh/id_rsa -p 22 tecmint@192.168.56.10

然而,使用了 ssh 客户端配置文件之后,我们还可以这样:

$ ssh centos7

你也可以在 man 帮助页面寻找更多的设置选项和使用实例:

$ man ssh_config

至此,文毕。我们在文中向你介绍了在 Linux 中如何使用用户指定 (自定义) 的 ssh 客户端配置文件。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/33596.html

相关文章

  • 聊一聊SSH

    摘要:本文主要是对的概念和用法做一些简单的梳理,大神请绕道。年,芬兰学者设计了协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为系统的标准配置。 如果你对NodeJs系列感兴趣,欢迎关注微信公众号:前端神盾局 或 github NodeJs系列文章 身为一枚合格的搬砖工程师,笔者经常需要登录服务器去查看日志或者部署应用,ssh也随之成为最常用的li...

    ChristmasBoy 评论0 收藏0
  • 如何通过Telnet和SSH远程监控主机

    摘要:子程序执行将在新进程中完成。要在上执行子程序,该类将使用该函数。如果是字符串,则字符串指定要通过执行的命令。如果是任何其他负值,则表示完全缓冲。它用于通过网络进行系统管理和应用程序部署。 showImg(https://segmentfault.com/img/remote/1460000018833620); 来源 | 愿码(ChainDesk.CN)内容编辑 愿码Slogan |...

    BothEyes1993 评论0 收藏0
  • 如何设置远程虚拟主机-如何在路由器内建立虚拟主机以实现远程访问

    摘要:总的来说,整个过程很简单,先开启服务,接着你就可以远程连接虚拟机了,只要你有一定的基础,多操作几遍,很快就能掌握的,网上也有相关教程和资料,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论留言。如何使用SSH来远程连接Linux虚拟主机?这个不难,首先,Linux虚拟机需要开启ssh服务,接着你就可以借助xshell等软件利用ssh来远程连接Linux虚拟机了,下面...

    0x584a 评论0 收藏0
  • Node.js 指南(入门指南)

    摘要:调试指南本指南将帮助你入门调试应用程序和脚本。这样做可能会给你带来潜在的重大安全威胁,我们建议你确保适当的防火墙和访问控制措施,以防止安全风险。不再维护或记录调试协议。 入门指南 安装Node之后,让我们尝试构建我们的第一个Web服务器,创建名为app.js的文件,并粘贴以下代码: const http = require(http); const hostname = 127.0....

    ybak 评论0 收藏0
  • Visual Studio Code 远程开发探秘

    摘要: IDE新时代! 作者:SHUHARI 的博客 原文:Visual Studio Code 远程开发探秘 Fundebug按照原文要求转载,版权归原作者所有。 在以前的文章 有趣的项目 - 在浏览器中运行 Visual Studio Code, 我介绍过 Coder 开发团队将 Visual Studio Code 搬到浏览器里的尝试。这是一个有趣的项目,不过没有想到的是,这之后不久...

    phodal 评论0 收藏0

发表评论

0条评论

wow_worktile

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<