配置 SSH 免密登录
(1)实际工作中,服务器被放置在机房中,同时受到地域和管理的限制,开发人员通常不会进入机房直接上机操作,而是通过远程连接服务器进行相关操作。
(2)在集群开发中,主节点通常会对集群中各个节点频繁地访问,就需要不断输入目标服务器的用户名和密码,这种操作方式非常麻烦并且还会影响集群服务的连续运行。
为了解决上述问题,可以通过配置 SSH 服务来分别实现远程登录和 SSH 免密登录功能。
1. SSH 概念
- SSH 为 Secure Shell(安全外壳协议) 的缩写。
- SSH 是一种网络协议,用于计算机之间的加密登录。很多 ftp、 pop 和 telnet 在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。
- SSH就是专为远程登录会话和其他网络服务提供安全性的协议。
2. SSH 组成
- SSH 是由客户端和服务端的软件组成的。
- 服务端是一个守护进程(sshd),他在后台运行并响应来自客户端的连接请求。
- 客户端包含 ssh 程序以及像 scp(远程拷贝)、 slogin(远程登陆)、 sftp(安全文件传输)等其他的应用程序。
3. SSH 实现过程
具体原理流程如下图所示:
4. SSH 实现步骤
因为我们搭建的是伪分布式集群,所以只准备一台节点,我们可以将此节点即作为服务器端,也作为客户机端,实现自己免密登录自己。
要想实现此功能,首先需要在此节点上生成root用户的公钥,然后将生成的公钥文件复制到公钥库文件authorized_keys中,然后将公钥库文件authorized_keys放置到/root/.ssh
目录下,这样以后每次使用root登录本机的时候,就不需要输入密码了。具体操作如下:
(1)下载 SSH 服务并启动
SSH 服务(openssh-server和openssh-clients)已经为大家下载好,所以此处直接启动即可:
/usr/sbin/sshd
SSH 服务启动成功后,会默认开启 22(SSH的默认端口)端口号,可以使用以下命令进行查看:
netstat -tnulp
执行命令,可以看到 22 号端口已经开启,证明我们 SSH 服务启动成功:
只要将 SSH 服务启动成功,我们就可以进行远程连接访问了。开发人员比较常用的远程连接工具有 Xshell、SecureCRT 等。接下来我们继续配置SSH免密钥登录。
(2)首先生成密钥对,使用命令:
ssh-keygen
## 或者
ssh-keygen -t rsa
语法解析:
ssh-keygen
:生成、管理和转换认证密钥。-t
:指定密钥类型,包括RSA和DSA两种密钥,默认RSA。
上面一种是简写形式,提示要输入信息时不需要输入任何东西,直接回车三次
即可。
从打印信息中可以看出,私钥 id_rsa 和公钥 id_rsa.pub 都已创建成功,并放在 /root/.ssh 目录中:
(3)将公钥放置到授权列表文件 authorized_keys 中,使用命令:
cp id_rsa.pub authorized_keys
(4)修改授权列表文件 authorized_keys 的权限,使用命令:
chmod 600 authorized_keys
设置拥有者可读可写,其他人无任何权限(不可读、不可写、不可执行)。
(5)验证免密登录是否配置成功,使用如下命令:
ssh localhost
## 或者
ssh e2d670ea9ad7
## 或者
ssh 10.141.0.42
其中,localhost
意为“本地主机
”,即“这台计算机”;e2d670ea9ad7
为本机主机名
,我们可以使用hostname命令进行查看;10.141.0.42
为本机IP地址
,我们可以使用ifconfig命令进行查看。
-
查看本机IP地址:
-
远程登录成功后,若想退出,可以使用 exit 命令: