SSH(简称SSH客户端)是一种用于访问远程主机的程序,它使用户能够在远程主机上执行命令。这是登录远程主机最受推崇的方法之一,因为它旨在为两个不受信任的主机在不安全的网络环境中的通信提供安全加密。SSH使用系统全局以及用户指定(用户定义)的配置文件。在本文中,我们将描述如何创建一个带有特定选项的自定义ssh配置文件以连接到远程主机。先决条件您必须已在桌面Linux上安装OpenSSH客户端。了解通过ssh进行远程连接的常用选项。包含适用于所有用户的ssh客户端的设置的系统全局配置文件。~/.ssh/config或$HOME/.ssh/config是用户指定/自定义的配置文件。该文件中的配置只对指定用户有效,因此会覆盖默认系统全局配置文件中的设置。这也是我们将创建和使用的文件。默认情况下,用户通过在ssh中输入密码进行身份验证,您可以使用Keygen只需一个简单的步骤就可以设置ssh无密码登录[2]。注意:如果~/.ssh目录在你的系统中不存在,请手动创建并设置以下权限:$mkdir-p~/.ssh$chmod0700~/.ssh上面的chmod命令显示只有该目录属于tomaster对该目录有读、写、执行权限,这就是ssh所要求的。如何创建用户指定的SSH配置文件默认情况下不创建该文件,因此您需要以具有读/写权限的用户创建它。$touch~/.ssh/config$chmod0700~/.ssh/config上面的文件包含由特定主机定义的部分,每个部分仅适用于主机定义中的匹配部分。~/.ssh/config文件的常用格式如下,其中所有以#开头的空行和行为注释:Hosthost1ssh_option1=value1ssh_option2=value1value2ssh_option3=value1Hosthost2ssh_option1=value1ssh_option2=value1value2Host*ssh_option1=value1ssh_option2=value1value2的以上格式详细解释:Hosthost1是关于host1的header定义,host相关的设置从这里开始,直到出现下一个headerdefinitionHosthost2,这样就形成了一个完整的定义。host1和host2是命令行上使用的主机别名,而不是实际的远程主机名。其中sshoption1=value1、sshoption2=value1value2等配置选项会应用到匹配的host上,可以缩进,看起来更整洁。对于ssh_option2=value1value2等选项,ssh执行时会按顺序优先使用value1的值。标头定义Host*(其中*是匹配模式/通配符,匹配零个或多个字符)将匹配零个或多个主机。还是以上面的格式为例,ssh也是读取这种格式的配置文件。如果执行ssh命令访问远程主机host1,如下:$sshhost1上面的ssh命令会执行以下操作:匹配配置文件中的主机别名host1,使用header定义中的各个设置项。继续匹配下一个主机定义,然后发现命令行中提供的主机名不匹配,所以会跳过下一个设置项。最后执行到最后一个主机定义Host*,会匹配所有主机。在这里,以下所有设置选项将应用于所有主机连接。但它不会覆盖主机先前定义的那些选项。sshhost2类似。如何使用用户指定的SSH配置文件在了解ssh客户端配置文件的工作原理后,您可以按如下方式创建它。请记住为您的服务器环境使用相应的选项、值(主机别名、端口号、用户名等)。使用您喜欢的编辑器打开配置文件:$vi~/.ssh/config并定义必要的部分:Hostfedora25HostName192.168.56.15Port22ForwardX11noHostcentos7HostName192.168.56.10Port22ForwardX11noHostubuntuHostName192.168.56.5PortXUser21ForyForysForytecmintFile//id_rsaProtocol2CompressionyesServerAliveInterval60ServerAliveCountMax20LogLevelINFO上面ssh配置文件详解:HostName-定义了真正登录的主机名,另外,你也可以使用数字IP地址,在命令行或者在HostName定义中都可以.用户-指定以哪个用户身份登录。Port–设置连接远程主机的端口,默认为22端口。但必须是远程主机的sshd配置文件中定义的端口号。协议-此选项定义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。连接到任何远程主机的标准方法是在上面两个文件中定义第二部分(我连接到CentOS7)。一般情况下,我们这样输入命令:$ssh-i~/.ssh/id_rsa-p22tecmint@192.168.56.10但是,使用ssh客户端配置文件后,我们也可以这样输入:$sshcentos7也可以运行man帮助页面可以找到更多设置选项和使用示例:$manssh_config至此,本文到此结束。在本文中,我们向您展示了如何在Linux中使用用户指定(自定义)的ssh客户端配置文件。
