linux 配置ssh有几种方法,第1张

直接使用Linux系 统的root帐户登录系统,在很多环境下是不允许。而且如果网络中的所有机器都能使用ssh登录关键服务器也是不允许的。这就要求我们需要使用一些手段, 现在root帐号的登录,而且是只有指定的几台机器才能登录。当然限制登录的ip这些通过网络设备也恩那个完成。但是我们只需要了解怎么使用系统自己的功 能实现,这是每一个系统管理员都比较了解的。

1,修改ssh的配置文件,是root用户只能通过本地登录,不能通过远程ssh连接服务器。

vim /etc/ssh/sshd_config,

把#PermitRootLogin yes改成

PermitRootLogin no,然后重启ssh服务器,root用户就不能通过ssh远程登录系统了,只能通过一个普通帐号su或者本地登录。

2,可以同修改其他系统配置文件,使之能通过几个指定的IP远程ssh登录服务器。把下面这段放到root的bash_profile文件中

ALLOWHOSTSLIST="1921681631"

REMOTEHOST=$(env | grep SSH_CLIENT | awk '{print $1}' | awk -F "=" '{print $2}')

if echo "${ALLOWHOSTSLIST}" | grep "${REMOTEHOST}" > /dev/null

then :

else

exit

fi

结果就只能通过IP地址是1921681631这台服务器通过ssh远程连接本服务器了。

3,可以把需要ssh远程服务器的IP地址添加到/etc/hostsallow,例如下面的操作:

sshd:1921681631:allow #只允许这个IP地址ssh登录

sshd:192168163:allow #允许这个网段的所有IP地址ssh登录

sshd:all:deny #拒绝所有没有出现在上面的IP地址的ssh连接

4,也可以使用iptables指定能够远程ssh到服务器的IP地址

iptables -A INPUT -p tcp --dport 22 -s 1921681631 -j ACCEPT #允许这个IP地址ssh连接本服务器

iptables -A INPUT -p tcp --dport 22 -s 1921681630/24 -j ACCEPT #允许这个网段的所有IP远程ssh连接本服务器

iptables -A INPUT -p tcp --dport 22 -j DROP #除了上面允许的IP地址外,都拒绝使用ssh连接到服务器

日常无论测试环境还是生产环境,在进行多台服务器(集群)安装配置的时候,经常需要对集群内服务器SSH访问做免密码设置。比如Hadoop、HBase等集群的安装配置,或者多台服务器为便于后续运维也需要做SSH免密配置。

结合近期搭建测试环境的过程,对如何快速给多台服务器做相互SSH访问免密配置做一个说明。主要分为几个步骤:修改主机名称、配置汇聚服务器的秘钥、汇聚其他服务器秘钥、拷贝汇聚秘钥文件、生成know_hosts文件、拷贝know_hosts文件。

1、集群规划

主机IP

主机名称

1014193101

dmz01

1014193102

dmz02

1014193103

inside01

1014193104

inside02

1014193105

inside03

1014193106

inside04

1014193107

inside05

1014193108

inside06

1014193109

inside07

1014193110

inside08

1014193111

inside09

1014193112

inside10

1014193113

inside11

1014193114

inside12

1014193115

inside13

1014193116

inside14

1014193117

inside15

1014193118

inside16

该集群共有18台服务器,划分为DMZ区2台,INSIDE区16台。主要用于web服务器和应用服务器、数据库、缓存等。为了部署应用、管理集群服务器方便,将18台服务器做SSH互访免密码配置。

2、修改主机名称

无论初装系统或云主机,其主机名称localhost或VM_75_173_centos都不容易进行区分服务器作用。所以便于安装、部署、维护方便,会重新修改主机名称hostname。

修改主机名称可以使用下面命令:

hostnamectl set-hostname inside01

使用上述命令修改主机名称后重新ssh登陆,即可看到主机名称已经修改。

3、配置汇聚服务器秘钥

此处所谓汇聚服务器就是选定集群中的一台服务器,然后其他服务器与其做SSH免密码信任。本文选定dmz01(1014193101)作为汇聚服务器。关系图如下所示:

其他服务器向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_rsapub

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_rsapub 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_rsapub

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 69KB/s 00:00

如上所示进行scp拷贝秘钥文件authorized_keys,该过程需要输入密码。

Ssh免密码验证:

[root@dmz01 ssh]# ssh dmz02

The authenticity of host 'dmz02 (1014168179)' 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,1014168179' (ECDSA) to the list of known hosts

Last login: Sat Nov 12 17:19:19 2016 from 1014193186

由上面可以看出ssh dmz02,ssh登陆dmz02服务器时,没有再需要输入密码。但是提示需要将dmz02添加到dmz01的know hosts列表文件中。这样下次ssh访问dmz02就不会再提示需要加入know hosts列表了。

6、生成know_hosts文件

从汇聚服务器依次ssh其他17台服务器,经过前面的免密码设置。不需要再输入密码,但是都有加入know hosts列表的提示。

注意:为了把自己dmz01也加入到know hosts文件中,也需要[root@dmz01ssh]# 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 1014193186

[root@inside10 ~]# ssh inside15

Last login: Sat Nov 12 17:52:29 2016 from 1014193186

[root@inside15 ~]# ssh dmz02

Last login: Sat Nov 12 20:05:59 2016 from 1014193186

[root@dmz02 ~]# ssh dmz01

Last login: Thu Nov 17 23:56:05 2016 from 2181089246

[root@dmz01 ~]# ssh inside15

Last login: Fri Nov 18 00:23:54 2016 from 10141114152

ssh免密码登陆顺序:dmz01inside10inside15dmz02dmz01inside15。

8、总结

本文主要涉及以下几个命令:

hostnamectl set-hostname inside01

ssh-keygen -t rsa

ssh-copy-id -i dmz01

这篇文章就介绍到这了,希望大家以后多多支持我们。

SSH(secure shell)用于远程和服务器交互

Ubuntu Server默认安装了OpenSSH Server,可通过端口22连接

SSH客户端可以用用户名密码的方式连接服务器,也可以用密钥对的方式连接服务器。

可以使用SSH客户端工具PuTTY,windows10自带的SSH工具,或者VMWare的SSH工具连接服务器

1在命令行用 用户名和密码连接

ssh username@serveraddress

2SSH客户端还可以用 密码对 (公钥和私钥)连接

这里使用Win10自带的工具

生成密钥对

运行命令:ssh-keygen

添加公钥

打开生成的公钥文件id_rsapub,复制全部内容

使用SSH密码登录的方式登录Ubuntu服务器,在当前用户目录创建文件夹ssh,进入ssh文件夹并创建文件authorized_keys,粘贴从公钥复制的内容并保存文件

修改SSH配置

修改Ubuntu Server的文件:

/etc/ssh/sshd_config

将PubkeyAuthentication yes前面的注释去掉

运行命令重启sshd服务

sudo systemctl restart sshd

退出SSH连接,重新用私钥登录登录

ssh <username>@<serveraddress> -i <私钥路径>

1 ssh简介以及本例的应用场景

① ssh的简介

SSH是一个用来替代TELNET、FTP以及R命令的工具包,主要是想解决口令在网上明文传输的问题。为了系统安全和用户自身的权益,推广SSH是必要的。 SSH是英文Secure Shell的简写形式。通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。

② 本例的应用场景

用户在client(Linux)上通过ssh远程执行server(Windows)上的命令,比如c:\testbat

注:Linux版自带ssh Server且默认启动,具体设置方法请参见google。

2 ssh服务器的安装(Windows)

ssh服务器软件有许多中,我们这里使用的是免费的freeSSHd。

① 首先从官方站点下载软件并安装(http://wwwfreesshdcom/)

② 安装完成后进入配置界面(Server Status),确认SSH server正在运行状态

③ 进入Users界面,设定一个访问的用户账户(比如xut)

这里我们建立一个叫xut的用户,认证有3种方式可以选择。从以后通过ssh运行命令的方便(无需输入密码)考虑,我们选择Public key认证方式。选择Password方式的话,每次访问需要输入密码,此种方式较为繁琐而且安全性不高。然后开放其Shell权限。

④ 进入认证界面,确认Public key认证方式属于激活状态(选择Allowed或Required)

此时ssh服务器端的基本设置已经OK,可进一步进行更加详细的设置(比如访问限定等),此处不再介绍。

注意:服务器端如果有防护墙时应该开发TCP 22号端口最为ssh连接使用。

3 ssh客户端的设置(Linux)

由于我们的客户端采用的是Linux,所以不用安装客户端软件,系统自带的就有。

我们需要在Linux上创建一个共有和私有的密钥对,私有密钥放到客户端(Linux)上,共有密钥放到服务器端(Windows)上。在Linux上通过ssh-keygen命令来创建。

[root@localhost ~]# ssh-keygen -t rsa

Generating public/private rsa key pair

Enter file in which to save the key (/root/ssh/id_rsa): [直接回车]

Enter passphrase (empty for no passphrase): [直接回车]

Enter same passphrase again: [直接回车]

Your identification has been saved in /root/ssh/id_rsa

Your public key has been saved in /root/ssh/id_rsapub

The key fingerprint is:

4d:dd:48:af:76:c2:ba:a8:bc:20:f3:28:1d:6a:28:53

其中,/root/ssh/id_rsa为私有密钥,/root/ssh/id_rsapub为共有的密钥。

此时,需要把共有密钥放到服务器端(Windows)进行保存,以便于服务器端进行安全检查。

我们通过认证界面找到存放共有密钥的地址(Public key folder)。

如上图所示,然后在c:\Program Files\freeSSHd目录下创建以登录用户名为名字的文本文件,此处举例为xut文件。并将/root/ssh/id_rsapub文件中的内容拷贝到c:\Program Files\freeSSHd\xut文件中。

至此,客户端和服务器端的密钥设置已经完成,可以通过如下命令进行远程的命令执行。

ssh xut@17228xxxxx "c:\testbat"

这条命令将执行服务器端的C盘下的testbat文件,并把结果返回,整个操作不需输入密码。

4 ssh客户端的设置(Windows)

由于Windows不附带ssh的客户端和服务器端,我们这里找一个免费的客户端软件PuTTY。

PuttY主页:http://wwwchiarkgreenendorguk/~sgtatham/putty/

各种客户端的比较:http://enwikipediaorg/wiki/Comparison_of_SSH_clients

在Putty主页,我们下载puttyzip(含除了PuTTYtel以外的所有文件),然后解压会发现一个叫plinkexe的文件,这就是我们的ssh客户端命令行软件。

我们首先要成一个共有和私有的密钥对,使用puttyzip中附带的PUTTYGENexe生成。

启动PUTTYGENexe后可以见到下图界面,点击[Generate]即可生成所需密钥对。

注意:由于是采用随机算法生成,需要不停地在对话框上移动鼠标进度条才会增加,否则将保持不变。

鼠标在这里不停移动

密钥生成完毕后,可以把私有密钥进行保存,为了登录简单起见不对私钥进行加密,提示没有passphrase选择忽略即可。假设我们这里把私钥保存为pri_keyppk。

我们把公钥放在freeSSHd端(ssh服务器端)进行保存,具体保存方法参见ssh客户端的设置(Linux)。

在Windows客户端,执行如下命令进行ssh连接,并不需要输入密码即可通过密钥进行自动认证。

plink -i pri_keyppk xut@17228xxxxx c:\testbat

(此时将执行服务器端的c:\testbat脚本。)

注:第一次连接时将出现“The server's host key is not cached in the registry…

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » linux 配置ssh有几种方法

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情