在研究Kafka集群的时候遇到的问题,我想要在集群中的任意节点都可以操作整个集群的服务,比如启动、停止。这里就需要使用到SSH来远程执行目标服务器上面的命令,但是就会遇到一个需要登陆密码的问题,所以研究了一下SSH的免密登陆。
什么是SSH?
SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。
简单说,SSH是一种网络协议,用于计算机之间的加密登录。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。
关于SSH的基本用法本文不作过多阐述。
SSH配置多台服务器之间的免密登陆
首先登陆到192.168.182.3
服务器,进入到用户的~/.ssh
目录下。
执行下面的命令后按四个回车。
ssh-keygen -t rsa
再利用ssh-copy-id
命令把生成的公钥copy到需要免密登陆其他的服务节点上。
ssh-copy-id 192.168.182.6 ssh-copy-id 192.168.182.4 ssh-copy-id 192.168.182.5
之后输入密码后就可以使用ssh进行免密登陆了。
SSH配置别名
一般使用SSH访问远程服务器的命令是:ssh username@ip
,比如:ssh root@192.168.182.4
。这种写法很麻烦,每次都需要手动输入这么一大串信息,这时候我们可以通过配置别名来实现便捷登陆,例如:ssh service1
,通过配置,我们这里的service1
就是前面的root@192.168.182.4
这一大串。
配置别名,我们需要进入到当前用户的.ssh
目录下,并且创建config
文件。
如果你的
.ssh
目录不存在的话,你可以使用ssh xxx
命令初始化一下。
cd ~/.ssh vim config
将config文件编辑成下面这种格式即可:
Host server1 HostName 192.168.182.4 User root IdentitiesOnly yes Host server2 HostName 192.168.182.5 User root IdentitiesOnly yes
保存之后就可以直接使用ssh 目标服务器别名
来实现便捷登陆。