如何在Linux系统上定制SSH来简化远程访问?
来源:互联网 发布:易酷cms插件 编辑:程序博客网 时间:2024/05/21 07:48
作者:Aaron Kili来源:Linux中国|互联网
本文标签: LinuxSSH Linux
SSH (指 SSH 客户端)是一个用于访问远程主机的程序,它使得用户能够 在远程主机上执行命令。这是在登录远程主机中的最受推崇的方法之一,因为其设计目的就是在非安全网络环境上为两台非受信主机的通信提供安全加密。
SSH 使用系统全局以及用户指定(用户自定义)的配置文件。在本文中,我们将介绍如何创建一个自定义的 ssh 配置文件,并且通过特定的选项来连接到远程主机。
先决条件:
- 你必须 在你的桌面 Linux 上安装好 OpenSSH 客户端。
- 了解通过 ssh 进行远程连接的常用选项。
SSH 客户端配置文件
以下为 ssh 客户端配置文件:
- /etc/ssh/ssh_config 为默认的配置文件,属于系统全局配置文件,包含应用到所有用户的 ssh 客户端的设置。
- ~/.ssh/config 或者 $HOME/.ssh/config 为用户指定/自定义配置文件,这个文件中的配置只对指定的用户有效,因此,它会覆盖掉默认的系统全局配置文件中的设置。这也是我们要创建和使用的文件。
默认情况下,用户是通过在 ssh 中输入密码来获取验证的,你可以以一个简单的步骤来 使用 Keygen 来设置 ssh 无密码登录。
注:如果你的系统上不存在 ~/.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=value1、sshoption2=value1 value2 等配置选项将应用到相匹配的主机,可以缩进以看起来更整齐些。
- 对于 ssh_option2=value1 value2 这样的选项,ssh 执行时会按照顺序优先使用 value1 的值。
- 头部定义 Host * (其中 * 为匹配模式/通配符,匹配零个或多个字符) 会匹配零个或者多个主机。
仍旧以上述的格式为例,ssh 也是也这样的形式类读取配置文件的。如果你执行 ssh 命令来访问远程主机 host1,如下:
- $ ssh host1
以上 ssh 命令会进行一下动作:
- 匹配配置文件中主机别名 host1,并使用头部定义中的各个设置项。
- 继续匹配下一个主机定义,然后发现命令行中提供的主机名没有匹配的了,所以接下来的各个设置项会被略过。
- 最后执行到最后一个主机定义 Host *, 这会匹配所有的主机。这里,会将接下来的所有设置选项应用到所有的主机连接中。但是它不会覆写之前已经有主机定义的那些选项。
- ssh host2 与此类似。
如何使用用户指定的 shh 配置文件
在你理解了 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 客户端配置文件。通过下方的反馈表单来写一些与本文的相关的想法吧。
作者简介:
Aaron Kili 是一名 Linux 和 F.O.S.S 忠实拥护者、高级 Linux 系统管理员、Web 开发者,目前在 TecMint 是一名活跃的博主,热衷于计算机并有着强烈的只是分享意愿。
写在最后:FOR Freedom 看看外边的世界,以及IT这一行,少不了去Google查资料,最后,安利一个V——PN代理。一枝红杏 加速器,去Google查资料是绝对首选,连接速度快,使用也方便。我买的是99¥一年的,通过这个链接(http://my.yizhihongxing.com/aff.php?aff=2509)注册后输上优惠码wh80,终身85折 ,平摊下来,每月才7块钱,特实惠。
本文标签: LinuxSSH LinuxWindows漏洞Mingw-64Google互联网杂谈
转自 SUN'S BLOG - 专注互联网知识,分享互联网精神!
原文地址: 《如何在Linux系统上定制SSH来简化远程访问?》
相关阅读:《如何使用Mingw-64在 Kali Linux上编译Windows漏洞?》
相关阅读:《Aaron Swartz – 互联网天才开挂的人生历程:每时每刻都问自己,现在这世界有什么最重要的事是我能参与去做的?》
相关阅读:《网站环境apache + php + mysql 的XAMPP,如何实现一个服务器上配置多个网站?》相关阅读:《什么是工程师文化?各位工程师是为什么活的?作为一个IT或互联网公司为什么要工程师文化?》
相关阅读: 对程序员有用:2017最新能上Google的hosts文件下载及总结网友遇到的各种hosts问题解决方法及配置详解
相关阅读: 《2017年国内最新的四种登录facebook的科学上网方法以及登录教程 》
相关BLOG:SUN’S BLOG- 专注互联网知识,分享互联网精神!去看看:www.whosmall.com
原文地址:http://whosmall.com/?post=312
- 如何在Linux系统上定制SSH来简化远程访问?
- 在Linux系统上配置IPMI来远程控制服务器
- 在linux系统上如何连接远程服务器
- 如何通过ssh远程连接linux系统
- 如何在局域网内使用mac通过SSH协议远程访问linux
- Linux操作系统上SSH远程访问工具的设置
- 在Linux系统上实现用Python远程访问Oracle数据库
- 在本地如何使用phpMyAdmin访问远程Linux上MySQL数据库
- 使用ssh在远程linux服务器上安装oracle
- 如何在Linux VPS上定制自己的Bash Prompt
- 远程访问Linux系统上的MySQL数据库
- ssh远程访问虚拟机中Ubuntu系统
- Linux系统入门学习:如何在VPS上安装和访问CentOS 7远程桌面
- 如何实现 ssh 访问远程机器
- Linux有问必答:如何在Linux上检查SSH的版本
- 通过外网远程ssh访问虚拟机上的linux服务器
- SSH无密码远程访问Linux主机
- 搭建ssh shell远程登录访问linux
- POJ 1456
- 《ACM程序设计》书中题目T 第二十题 找底数
- Android应用安全与校验之反动态调试
- 第二十、Java之static自定义数组工具类
- 欢迎使用CSDN-markdown编辑器
- 如何在Linux系统上定制SSH来简化远程访问?
- Excel 宏与VBA-01-宏基础知识
- C++空类的大小
- Eclipse-设置JVM的内存参数
- 算法之路(二)
- 每天一个 Linux 命令(27):chmod 命令
- java redis使用之利用jedis实现redis消息队列
- 新人程序媛请多多关照~
- 基于MySQL元数据的Hive的安装和简单测试