对SSH连接来说最重要的4个文件

译文
系统 Linux
了解四个重要的文件,就能更好地使用SSH工具。

对SSH连接来说最重要的4个文件

【51CTO.com快译】如果你是Linux管理员,就知道安全外壳的价值。要是没有这个工具,远程登录到Linux服务器(或通过安全通道发送文件)就可能带来很大的麻烦。然后你得到SSH,可以毫不犹豫地使用它。但对于那些刚接触Linux管理的人来说,可能不太了解SSH的工作原理。当然,你可以在计算上发出这个命令:

  1. ssh jack@192.168.1.100 

你将登录,可以处理工作了。这个连接背后发生了什么?关键部分又是什么?

我认为将SSH分解为对SSH连接来说最重要的四个文件是好主意,那样你就能更好地了解工作原理,从而开始使用该工具。

不妨看看那些关键的文件。

known_hosts

对SSH来说这个文件非常重要。~/.ssh/known_hosts文件包含你登录的计算机的SSH指纹。这些指纹是使用远程服务器的SSH密钥生成的。通过安全外壳连接到远程计算机时,系统会问你是否想要继续连接(图A)。

图A. 连接或不连接,那是个问题

你对该问题回答“是”时,远程主机指纹将保存到known_hosts文件中。该密钥将显示为随机字符串。每个条目将以| 1 |开头(图B)。

图B. 已知的主机文件

连接发生的情况如下:

1. 你尝试通过客户端与远程服务器建立连接。

2. 远程服务器将其公钥发送给客户端。

3. SSH客户端在~/.ssh/known_hosts中搜索密钥指纹。

4. SSH客户端加载并验证密钥。

5. 进行用户身份验证

6. 如果身份验证成功,你将登录到远程计算机。

同样,在该连接过程中,如果未找到远程指纹,SSH客户端将询问你是否要继续,当你回答继续时,将指纹保存到~/.ssh/known_hosts。

authorized_keys

在~/.ssh目录中,还有另一个名为authorized_keys的文件。该文件与known_hosts文件大不一样。authorized_keys包含从远程客户端拷贝到服务器的所有SSH身份验证密钥。这用于SSH密钥身份验证。

为了使密钥验证正常工作,客户端的公钥将拷贝到远程服务器上的~/.ssh/authorized_keys文件。最简单的方法是在客户端上使用ssh-copy-id命令,就像这样:

 

  1. ssh-copy-id jack@192.168.1.100 

系统将提示你输入远程用户的密码。验证成功后,来自客户端的公钥将拷贝到远程服务器上的~/.ssh/authorized_keys文件中。如果你打开该文件,会看到每个条目都以ssh-rsa开头,并以客户端计算机的username@hostname结尾(图C)。

图C. authorized_keys文件示例

一旦该密钥保存到authorized_keys(在远程服务器上),你可以使用SSH密钥身份验证登录到该服务器(从已保存公钥的客户端登录)。

ssh_config

/etc/ssh/ssh_config文件是用于SSH的系统范围客户端配置的文件。此处看到的配置仅在ssh命令用来连接到另一个主机时才起作用。你通常不需要编辑该文件。

sshd_config

另一方面,/etc/ssh/sshd_config文件是SSH守护程序的配置文件。在这里,你配置以下内容:

  • 默认SSH端口。
  • 公钥验证。
  • root登录权限。
  • 密码验证。
  • X11Forwarding。

比如说,假设你只想允许密钥验证并禁用密码验证。在远程服务器上,可以编辑sshd_config文件,如下所示:

将#PubkeyAuthentication yes改成Pubkeyauthentication yes。

将#PasswordAuthentication yes改成PasswordAuthentication no。

一旦完成这些更改,重新启动ssh服务,远程服务器将只允许来自~/.ssh/authorized_keys中有条目的客户端计算机的连接。远程服务器的authorized_keys文件中没有条目?那就无法访问。

了解那些文件

如果了解上述四个文件,你可以更好地使用SSH工具。你需要知道这些文件是如何运作的吗?并不需要。不过作为管理员,如果你对使用的工具有更深入的了解,就会从中受益。

想了解更多信息,请阅读以下参考手册页:

man ssh

man ssh_config

man sshd_config

原文标题:The 4 most important files for SSH connections,作者:Jack Wallen

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

 

责任编辑:庞桂玉 来源: 51CTO
相关推荐

2018-05-21 21:04:07

数据科学家算法统计模型

2017-11-01 14:23:14

DBAPostgreSQL 新亮点

2015-10-19 17:57:33

容器OpenStack微服务

2012-08-13 09:55:22

架构师

2013-01-07 09:16:21

云计算SaaS工程堆栈

2015-10-08 16:23:17

2023-11-06 18:06:00

Docker容器

2023-06-27 10:21:14

2015-09-18 15:21:33

求职就业创业阮一峰

2019-08-06 07:17:37

2014-06-18 15:31:24

RHEL 7Fedora

2010-06-12 15:53:22

MySQL数据库

2011-12-14 09:03:40

jquery

2021-01-14 13:39:12

漏洞网络安全网络攻击

2018-05-18 15:05:25

JavaJava 10新特性

2021-06-02 12:12:46

DevOps面试Linux

2015-06-29 13:33:50

APMJAVA企业级

2015-06-17 10:14:57

Java性能指标

2015-08-26 14:38:27

企业级Java性能指标

2013-12-12 13:20:53

基础架构即服务IaaS公有云
点赞
收藏

51CTO技术栈公众号