Linux下定制SSH来简化远程访问教程

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



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

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

  先决条件:

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

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

  SSH 客户端配置文件

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

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

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

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

  注:如果你的系统上不存在 ~/.ssh 目录,那就手动创建它,并设置如下权限:


1

2

$ mkdir -p ~/.ssh

$ chmod 0700 ~/.ssh

  以上的 chmod 命令表明,只有目录属主对该目录有读取、写入和执行权限,这也是 ssh 所要求的设置。

  如何创建用户指定的 SSH 配置文件

  该文件并不会被默认创建的,所以你需要使用具有读取/写入权限的用户来创建它。


1

2

$ touch ~/.ssh/config

$ chmod 0700 ~/.ssh/config

  上述文件包含由特定主机定义的各个部分,并且每个部分只应用到主机定义中相匹配的部分。

  ~/.ssh/config 文件的常见格式如下,其中所有的空行和以 ‘#’ 开头的行为注释:


1

2

3

4

5

6

7

8

9

10

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

  如上格式详解:

  1.Host host1 为关于 host1 的头部定义,主机相关的设置就从此处开始,直到下一个头部定义 Host host2 出现,这样形成一个完整的定义。

  2.host1 和 host2 是在命令行中使用的主机别名,并非实际的远程主机名。

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

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

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

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


1

$ ssh host1

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

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

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

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

  4.ssh host2 与此类似。

  如何使用用户指定的 shh 配置文件

  在你理解了 ssh 客户端配置文件的工作方式之后,你可以通过如下方式来创建它。记得使用你的服务器环境中对应的选项、值 (主机别名、端口号、用户名等)。

  通过你最喜欢的编辑器来打开配置文件:


1

$ vi ~/.ssh/config

  并定义必要的部分:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

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 配置文件的详细解释:

  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)。一般情况下,我们这样输入命令:


1

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

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


1

$ ssh centos7

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


1

$man ssh_config
(0)

相关推荐

  • Linux下定制SSH来简化远程访问的方法

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

  • linux下配置web+ftp服务器全教程(一)

    最近公司上了个服务器,顺便整理下各部门的网站,搞的异常忙碌,今天终于闲下来了整理一下这几天遇到的问题和一些想法,今天首要写的是一篇完整版的教程:linux(fedora、redhat)下配置web+f ...

  • 在Linux下的SSH端口转发的程序

    在Linux系统中的SSH端口转发,有很多种的转发操作,而且还是一种很好用的关于端口使用的程序,所以今天我们就来了解下关于SSH端口转发具体内容吧! 通常情况下两个不同的网络之间总会开放某一些特定的端 ...

  • linux下设置ssh免密码登陆的配置步骤分享

    我有两台笔记本电脑上分别装有两个centos的虚拟机,一个IP为172.16.1.10(slave),一个IP为172.16.1.9(master)。 在slave上用root用户 vi /etc/h ...

  • linux下高级SSH安全技巧

    SSH服务器配置文件是/etc/ssh/sshd_conf。在你对它进行每一次改动后都需要重新启动SSH服务,以便让改动生效。 1、修改SSH监听端口 默认情况下,SSH监听连接端口22,攻击者使用端 ...

  • Linux下的SSH端口转发配置方法

    通常情况下两个不同的网络之间总会开放某一些特定的端口用于通讯使用,而SSH所使用的22端口通常就在开放之列。基于SSH的端口转发就是利用SSH作为中间的代理,达到绕过两个网络之间的限制,顺利的进行任意 ...

  • 在Linux下创建写保护的文件的教程

    假如你想对Linux中的一些重要文件做写保护,这样它们就不能被删除或者被篡改成之前的版本或者其他东西,或者在其他情况下,你可能想避免某些配置文件被软件自动修改。使用chown和chmod命令修改文件的 ...

  • Linux系统中SSH命令的使用教程

    ssh用于登录远程主机, 并且在远程主机上执行命令,它的目的是替换rlogin和rsh,同时在不安全的网络之上,两个互不信任的主机之间, 提供加密的, 安全的通信连接.先来看一下ssh命令的一些参数: ...

  • linux下使用ssh管理VPS的注意事项小结

    笔者采用key文件交互登录的方式连接ssh。因此,第一步要生成ssh的key文件。 1、ssh-keygen 2、接着,将服务器上的密钥、公钥下载下来。保存在当前用户的.ssh文件夹下。 这里需要注意 ...