SSH (指 SSH 客户端)是一个用于访问远程主机的程序,它使得用户可以 在远程主机上执行命令。这是在登陆远程主机中的最受推崇的方法之一,由于其设计目的就是在非安全网络环境上为两台非受信主机的通讯提供安全加密。shell
SSH 使用系统全局以及用户指定(用户自定义)的配置文件。在本文中,咱们将介绍如何建立一个自定义的 ssh 配置文件,而且经过特定的选项来链接到远程主机。ubuntu
如下为 ssh 客户端配置文件:centos
/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
如上格式详解:centos7
Host host1
为关于 host1 的头部定义,主机相关的设置就今后处开始,直到下一个头部定义 Host host2
出现,这样造成一个完整的定义。sshoption1=value1
、sshoption2=value1 value2
等配置选项将应用到相匹配的主机,能够缩进以看起来更整齐些。ssh_option2=value1 value2
这样的选项,ssh 执行时会按照顺序优先使用 value1 的值。Host *
(其中 *
为匹配模式/通配符,匹配零个或多个字符) 会匹配零个或者多个主机。仍旧以上述的格式为例,ssh 也是也这样的形式类读取配置文件的。若是你执行 ssh 命令来访问远程主机 host1,以下:
$ ssh host1
以上 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、Ed2551九、ECDSA 等受权验证信息的文件。ForwardX11
– 定义 X11 链接是否自动重定向到安全通道和 DISPLAY 设置。有两个能够设置的值,即 yes 或 no。Compression
– 默认值为 no,若是设置为 yes,则在链接远程主机过程当中使用压缩进行传输。ServerAliveInterval
– 设置当没有收到服务器响应 (或者数据))时的超时时间,单位为秒,ssh 会经过加密信道发送信息,请求服务器响应。默认值为 0,这意味着 ssh 不会向服务器发送响应请求;若是定义了 BatchMode 选项,则默认是 300 秒。ServerAliveCountMax
– 设置服务器在没有接收到服务器的任何响应时,由服务器发送的活动信息数量。LogLevel
– 定义 ssh 登陆信息的的日志冗余级别。容许的值为:QUIET、FATAL、ERROR、INFO、VERBOSE、DEBUG、DEBUG一、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 客户端配置文件。