Linux集群内SSH免密码访问的快速配置方法。
作者:要赢全靠浪人气:日常无论测试环境还是生产环境,在进行多台服务器(集群)安装配置的时候,经常需要对集群内服务器SSH访问做免密码设置。比如Hadoop、HBase等集群的安装配置,或者多台服务器为便于后续运维也需要做SSH免密配置。
结合近期搭建测试环境的过程,对如何快速给多台服务器做相互SSH访问免密配置做一个说明。主要分为几个步骤:修改主机名称、配置汇聚服务器的秘钥、汇聚其他服务器秘钥、拷贝汇聚秘钥文件、生成know_hosts文件、拷贝know_hosts文件。
1、集群规划
主机IP | 主机名称 |
10.141.93.101 | dmz01 |
10.141.93.102 | dmz02 |
10.141.93.103 | inside01 |
10.141.93.104 | inside02 |
10.141.93.105 | inside03 |
10.141.93.106 | inside04 |
10.141.93.107 | inside05 |
10.141.93.108 | inside06 |
10.141.93.109 | inside07 |
10.141.93.110 | inside08 |
10.141.93.111 | inside09 |
10.141.93.112 | inside10 |
10.141.93.113 | inside11 |
10.141.93.114 | inside12 |
10.141.93.115 | inside13 |
10.141.93.116 | inside14 |
10.141.93.117 | inside15 |
10.141.93.118 | inside16 |
该集群共有18台服务器,划分为DMZ区2台,INSIDE区16台。主要用于web服务器和应用服务器、数据库、缓存等。为了部署应用、管理集群服务器方便,将18台服务器做SSH互访免密码配置。
2、修改主机名称
无论初装系统或云主机,其主机名称“localhost”或“VM_75_173_centos”都不容易进行区分服务器作用。所以便于安装、部署、维护方便,会重新修改主机名称hostname。
修改主机名称可以使用下面命令:
hostnamectl set-hostname inside01
使用上述命令修改主机名称后重新ssh登陆,即可看到主机名称已经修改。
3、配置汇聚服务器秘钥
此处所谓汇聚服务器就是选定集群中的一台服务器,然后其他服务器与其做SSH免密码信任。本文选定dmz01(10.141.93.101)作为汇聚服务器。关系图如下所示:
其他服务器向dmz01做SSH登陆免密码信任配置。此处dmz01就是汇聚服务器。
配置汇聚服务器秘钥的命令如下所示:
[root@dmz01 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): [Enter键]
Enter passphrase (empty for no passphrase): [Enter键]
Enter same passphrase again: [Enter键]
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
43:0d:08:18:ec:9e:d6:1f:ea:5f:04:30:0f:66:26:41 root@dmz01
The key's randomart image is:
+--[ RSA 2048]----+
| oE+O. .. |
| o= =. o |
| . o . . |
| . o |
| . o S |
| + . .. . |
| . o .. |
| . .. |
| .... |
+------------------+
进入“/root/.ssh”目录,拷贝生成“authorized_keys”文件,使用命令如下:
cat id_rsa.pub >>authorized_keys
结果如下所示:
[root@inside01 .ssh]# ll
total 12
-rw-r--r-- 1 root root 395 Nov 12 16:25 authorized_keys
-rw------- 1 root root 1675 Nov 12 16:24 id_rsa
-rw-r--r-- 1 root root 395 Nov 12 16:24 id_rsa.pub
4、拷贝其他服务器秘钥
经过第3节配置汇聚服务器秘钥后,需要依次配置dmz02,inside01,…,inside16等17台服务器的秘钥。方法同第三节命令。
配置完成其他17台服务器的秘钥后,需要将该17台服务器的秘钥复制拷贝到汇聚服务器dmz01上。其拷贝命令如下:
[root@dmz01 .ssh]# ssh-copy-id -i dmz01
[root@inside01 .ssh]# ssh-copy-id -i dmz01
依次将17台的秘钥汇聚拷贝到dmz01上。
5、拷贝汇聚秘钥文件
从汇聚服务器将汇聚的秘钥文件依次拷贝到其他17台服务器的“/root/.ssh”目录下面,命令如下所示:
[root@dmz01 .ssh]# scp authorized_keys dmz02:/root/.ssh/
[root@dmz01 .ssh]# scp authorized_keys inside01:/root/.ssh/
…
[root@dmz01 .ssh]# scp authorized_keys inside16:/root/.ssh/
root@inside16's password:
authorized_keys 100% 7104 6.9KB/s 00:00
如上所示进行scp拷贝秘钥文件“authorized_keys”,该过程需要输入密码。
Ssh免密码验证:
[root@dmz01 .ssh]# ssh dmz02
The authenticity of host 'dmz02 (10.141.68.179)' can't be established.
ECDSA key fingerprint is 22:49:b2:5c:7c:8f:73:56:89:29:8a:bd:56:49:74:66.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'dmz02,10.141.68.179' (ECDSA) to the list of known hosts.
Last login: Sat Nov 12 17:19:19 2016 from 10.141.93.186
由上面可以看出“ssh dmz02”,ssh登陆dmz02服务器时,没有再需要输入密码。但是提示需要将dmz02添加到dmz01的“know hosts”列表文件中。这样下次ssh访问dmz02就不会再提示需要加入know hosts列表了。
6、生成know_hosts文件
从汇聚服务器依次ssh其他17台服务器,经过前面的免密码设置。不需要再输入密码,但是都有加入know hosts列表的提示。
注意:为了把自己dmz01也加入到know hosts文件中,也需要“[root@dmz01.ssh]# ssh dmz01”一下。
最后生成的know_hosts文件内容如下所示:
查看know_hosts文件行数:
[root@dmz01 .ssh]# wc -l known_hosts
18 known_hosts
可以看出每个主机一行内容,表示dmz01知道了包括自己在内的所有18台服务器。
7、拷贝know_hosts文件
经过第六节生成18台服务器对dmz01的know host设置,将dmz01的/root/.ssh/know_hosts文件scp拷贝到其他17台服务器上。
ssh免密码登陆验证:
[root@dmz01 .ssh]# ssh inside10
Last login: Tue Nov 15 15:01:18 2016 from 10.141.93.186
[root@inside10 ~]# ssh inside15
Last login: Sat Nov 12 17:52:29 2016 from 10.141.93.186
[root@inside15 ~]# ssh dmz02
Last login: Sat Nov 12 20:05:59 2016 from 10.141.93.186
[root@dmz02 ~]# ssh dmz01
Last login: Thu Nov 17 23:56:05 2016 from 218.10.89.246
[root@dmz01 ~]# ssh inside15
Last login: Fri Nov 18 00:23:54 2016 from 10.141.114.152
ssh免密码登陆顺序:dmz01àinside10àinside15àdmz02àdmz01àinside15。
8、总结
本文主要涉及以下几个命令:
hostnamectl set-hostname inside01
ssh-keygen -t rsa
ssh-copy-id -i dmz01
debian 9.4 安装教程 linux系统debian9.4图文详细安装步骤
我们这里选择install安装,不装桌面,因为是做服务器,装桌面没意义。
我们这里选择装英文版,你也可以装中文版本。
手动配置网络
设置ip
设置 子网掩码
设置网关
名称服务器地址留空
计算机名称随便写
域名称
设置root密码
重复设置一下root密码
新建一个新用户
时区默认就可以了
硬盘分区
这里选择需要安装系统的硬盘,不要安装到U盘上了,一定要看准磁盘大小
选择 所有文件放一个磁盘分区上,新用户推荐
提示删除原硬盘中的所有数据与分区
完成分区与将修改写入到磁盘
不扫描CD
选择 否 (不使用网络镜像)
选择 NO 统计软件包流行度的。会定期上报本机安装了哪些软件包。
只选择SSH 其它都取消安装
选择是
不要安装到U盘中,要安装到硬盘中
可以拔掉U盘与 光盘 再continue 就自动重启了
查看设置IP地址、网关的文件/etc/network/interfaces
参考:
auto lo
iface lo inet loopback
allow-hotplug enp1s0f0
iface enp1s0f0 inet static
address 183.61.252.25/26
gateway 183.61.252.1
设置服务器dns的文件/etc/resolv.conf
不设置服务器里不能解析域名
参考:
nameserver 114.114.114.114
nameserver 8.8.8.8
重启网络service networking restart
userdel -f 需要删除用户(比如上面建立的用户,也可以不删除,建议删除上面建立的没什么用途的用户)
输入root和密码,进入系统,修改
/etc/ssh/sshd_config
文件里面的#PermitRootLogin … 为PermitRootLogin yes
如果不修改root用户就无法SSH连接服务器
再执行命令systemctl reload sshd.service或reboot重启使得修改生效
andLinux:让你的Windows运行Linux程序
毫无疑问,Linux-特别是Uubuntu-是一个杀手级的操作系统,充满了卓越的应用软件,但是大概有千万个理由,你仍然把Windows作为主要的操作系统。我们理解,这事经常发生。但是,你宁愿决定生活在Windows中,而抛下那些杀手级的Linux应用程序吗?当然你也可以双重启动或很局限的在虚拟机窗口中运行Linux,但是能和Windos程序一样一起运行这些程序不是很棒吗?-就像Linux用户使用WINE或OS X通过Parallels或 VMWare做到的那样。你能!并且今天我向你展示通过一个叫andLinux的自由软件,如何在Windows中无缝运行你最喜爱的Linux软件。什么是andLinux?andLinux实际上是在Windows顶层上Ubuntu的一个完全安装。与Parallels中的一致模式或VMWare Fusion中的统一模式相似,andLinux把Linux程序提出虚拟机,混合在你所有的Windows程序中,创造出一个无缝界面。很古怪,啊哈?
为了让你们咽一下口水,我放出一些图片,我的Windows桌面充满了混在一起的Windows和Linux程序,以一种不自然的方式打击一下大家。
![Linux集群内SSH免密码访问的快速配置方法。 Linux集群内SSH免密码访问的快速配置方法。](http://lifehacker.com/assets/images/gallery/17/2008/02/smallish_2280109989_e046588e1b_o.png)
Kate vs. Notepad
![Linux集群内SSH免密码访问的快速配置方法。 Linux集群内SSH免密码访问的快速配置方法。](http://lifehacker.com/assets/images/gallery/17/2008/02/smallish_2280109943_4f16d5ddb2_o.png)
Konqueror vs. Explorer
![Linux集群内SSH免密码访问的快速配置方法。 Linux集群内SSH免密码访问的快速配置方法。](http://lifehacker.com/assets/images/gallery/17/2008/02/smallish_2280900366_bd90b384be_o.png)
Synaptic (Linux), Add or Remove Programs (Windows)
![Linux集群内SSH免密码访问的快速配置方法。 Linux集群内SSH免密码访问的快速配置方法。](http://lifehacker.com/assets/images/gallery/17/2008/02/smallish_2280900284_65a2ae9a20_o.png)
IE, Linux Firefox, and Konqueror
![Linux集群内SSH免密码访问的快速配置方法。 Linux集群内SSH免密码访问的快速配置方法。](http://lifehacker.com/assets/images/gallery/17/2008/02/smallish_2280109429_b3020f99b9_o.png)
Akregator Newsreader, Windows Explorer, and Konsole
andLinux工作于Windows 2000, XP,2003,和Vista(只限32-bit),所以如果你运行着以上任一个版本的Windows,连接到找一个镜像下载安装程序,或者直接抓取这个种子(BT下载真快)。andLinux有两道美味:XFCE极小版(143MB)和KDE完全版(665M);本篇指南中,我会使用KDE完全版。
一旦下载完成,运行安装程序让我们开始吧。
安装配置andLinux
![Linux集群内SSH免密码访问的快速配置方法。 Linux集群内SSH免密码访问的快速配置方法。](http://www.lifehacker.com/assets/resources/2008/02/01-memory%20config.png)
大多andLinux安装过程简单易懂,但是有一些要点值得强调。安装屏幕第一个值得注意的是内存配置,在那里你选择当它在你系统中运行时,分配给andLinux多少内存。你可以在128MB到1GB中任意选择,但是实际上推荐192MB作为最小值。我选择256MB,但是你可以根据你电脑有多少空闲内存而变化。
![Linux集群内SSH免密码访问的快速配置方法。 Linux集群内SSH免密码访问的快速配置方法。](http://www.lifehacker.com/assets/resources/2008/02/02-startup-ty%5Be.png)
你也会进入一个询问启动类型的屏幕。你可以选择总是自动把andLinux作为一个服务运行,或要求andLinux通过命令行手动启动,或Windows启动时自启动。我选择“run andLinux manually as an NT service”选项(不管你在截图上看到什么),但是如果你在确信你会频繁运行Linux程序的基础上,你可能希望设置它为自启动。
![Linux集群内SSH免密码访问的快速配置方法。 Linux集群内SSH免密码访问的快速配置方法。](http://www.lifehacker.com/assets/resources/2008/02/03-windows-file-access.png)
andLinux默认仍然不能访问Windows所有的文件系统,所以为了在Windows和Linux程序间共享文件,你需要在安装时设置Windows文件访问。我选择使用Samba来做这件事(正如截图所示)。这里是展示它如何工作的。
![Linux集群内SSH免密码访问的快速配置方法。 Linux集群内SSH免密码访问的快速配置方法。](http://www.lifehacker.com/assets/resources/2008/02/04-config-file-access.png)
你要通过新建文件夹在Windows某个地方(任何地方,真的)设置一个共享文件夹,对它右键,选择共享和安全。然后只要激活这个文件夹的共享并允许用户改变文件夹内容。确保共享名不要包含空格否则andLinux会抱怨。点击确认保存共享参数,然后只要把共享文件夹的名字给andLinux安装程序,然后是Windows帐户的用户名和密码。
当完成安装程序,在使用andLinux和在Windows中运行所有的Linux软件之前,你需要重启电脑。
通过andLinux运行程序
![Linux集群内SSH免密码访问的快速配置方法。 Linux集群内SSH免密码访问的快速配置方法。](http://www.lifehacker.com/assets/resources/2008/02/startandlinux.png)
如果不是设置andLinux自启动,在使用它之前你需要使用截图中的助手启动andLinux。在它启动后,你现在可以运行想要的任何一个预装软件了。你可能通过很多方式做到这一点,但是我还是要强调几点。
![Linux集群内SSH免密码访问的快速配置方法。 Linux集群内SSH免密码访问的快速配置方法。](http://www.lifehacker.com/assets/resources/2008/02/kde-start-menu.png)
首先,你会注意到一个新系统托盘程序正在运行;它是一个小型KDE启动菜单,通过它访问很多默认KDE软件,从Konqueror(一个文件管理器,网络浏览器,等等)到Synaptic(可安装新程序的软件包管理器)。我特别强调这两个软件是因为你可以从Konqueror浏览和启动更多软件,从Synaptic安装新软件。
![Linux集群内SSH免密码访问的快速配置方法。 Linux集群内SSH免密码访问的快速配置方法。](http://www.lifehacker.com/assets/resources/2008/02/applications-in-konqueror.png)
然后,如果启动Konqueror并游到应用软件标签,你能分类别浏览到一些已安装的Linux软件,从娱乐和游戏到互联网和多媒体。如果这是你第一次玩Linux,我推荐尝试一下不同的软件,找一点可见的感觉。
通过andLinux安装新Linux软件
![Linux集群内SSH免密码访问的快速配置方法。 Linux集群内SSH免密码访问的快速配置方法。](http://www.lifehacker.com/assets/resources/2008/02/install-apps.png)
既然已经尝试了一下,你大概已经忍不信手痒想要安装新软件了吧。要安装新软件,点击KDE开始菜单并启动Synaptic,它就像Windows里的添加/删除程序那样-但是更有用。通过 Synaptic,你可以浏览Linux软件令人惊讶的财富。用Synaptic搜索具体的软件或分类浏览软件。如果发现你喜欢的,标记安装,然后应用更改。Synaptic会自动下载和安装运行那个软件需要的一切,当安装完成,你可以从Konqueror启动它。很方便,啊哈?
![Linux集群内SSH免密码访问的快速配置方法。 Linux集群内SSH免密码访问的快速配置方法。](http://www.lifehacker.com/assets/resources/2008/02/context-tweak.png)
andLinux甚至改变Windows的右键菜单,所以如果比如你点击一个文本文件,你可以在andLinux默认程序中打开它。那意味着你可以在平行的Linux环境中从Windows里打开一个文件或文件夹,用任何支持的软件。我正确运行这个功能遇到了点麻烦,所以你的情况可能不同。
记住andLinux现在正在测试,写这篇文章的发布的是beta 1第6候选版本,所以这真是该死的边缘。大多数核心功能在这,但是有时BUG会多一点,所以不会一切完美运行。如果你不准备接受这个跳跃,可以理解……只要睁大你的眼睛,因为一旦出现一个更稳定和良好测试的版本,那些曾经如此严格的系统界限在你的Windows盒子上会变得更模糊-因为那些界限现在仍然不够模糊,你可以在你的Hackintosh电脑上安装MAC OS X,然后在MAC上无缝运行Windows。
Linux爱好者,让我们在评论里看到你推荐给Windows用户,在他们被Linux化的自作自受的电脑上试用的软件。同样,如果你已经试用过andLinux,让我们知道它是如何为你工作的。
哪一个Linux发行版最流行?一个以LINUX当WINDOWS使用的菜鸟的自述乖,Linux,请暂且让让路打破信息孤岛,Ubuntu要上网Linux中修改root用户密码Linux下使用QQ解决方案的选择限制linux登录的终端ttyLinux系统屏幕刷新率问题的解决top命名的显示信息解释使用WINE软件来运行一些Windows XP不能运行的游戏
加载全部内容