搜索
您的当前位置:首页正文

SSH KEY免密码验证生产环境分发、管理、备份

来源:二三娱乐

ssh介绍:

ssh是secre shell protocol的简写,由IETF的网咯工作小组(Network Working Group)所制定;它通过对联机数据包加密的技术来进行数据传递,因此,数据很安全。SSH是专为远程登入会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中中的 信息泄露问题。

默认情况下,SSH本身提供两个服务功能:一个是类似telnet的远程联机使用shell的服务,即俗称的SSH;另一个是类似FTP服务的sftp-server,可以提供更安全的FTP服务。

两种安全级别:

第一种级别(基于口令的安全验证)

只要知道自己账号和口令,就可以登入到远程主机。所有传输的数据都会被加密。

第二种级别(基于密钥的安全验证)

需要依靠密钥,也就是你必须为自己创建一对密钥,并把公用密钥放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端SSH软件就会向服务器发出请求,请求用你的密钥进行安全验证。服务器收到请求之后,现在服务器上你的用户主目录下找到你的公用密钥,然后把它和你发送过来的公用密钥进行比较。如果两个密钥一致,服务器就用公用密钥加密“质询”(challenge)并把它发送该客户端软件。

分发数据(一把钥匙开多把锁)

为各服务器添加用户

[root@openion ~]# useradd openion                        #添加用户
[root@openion ~]# echo "open" | passwd --stdin openion      #设置密码

对分发服务器进行设置

由于服务器为中心分发服务器,所以选择在a端建立Public key(锁)与Private key(钥匙)

[root@openion ~]# su – openion
[openion@openion ~]$ ssh-keygen -t dsa

# ssh-keygen 是生成密钥的工具,-t参数指定密钥类型,这里是建立dsa类型密钥。
# 也可以执行ssh-keygen -t rsa来建立rsa类型的密钥。
# RSA与DSA加密算法的区别:
# RSA是一种加密算法(ps:RSA也可以进行数字签名的),它的简写的是由Ron Rivest、 Adi Shamir 和Leonard Adleman
#这三个人名字的第一个字母连接起来就是RSA
#DSA就是数字签名算法的英文全称的简写,即Digital Signature Algorithm,RSA既可以进行加密也可以进行数字签名实现认证,而DSA只能用于数字签名从而实现认证。

Generating public/private dsa key pair.
Enter file in which to save the key (/home/openion/.ssh/id_dsa):    #默认回车即可
Created directory '/home/openion/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/openion/.ssh/id_dsa. #这是Private key的路径
Your public key has been saved in /home/openion/.ssh/id_dsa.pub. #这是Public key的路径
The key fingerprint is:
c2:db:37:df:f7:c4:b2:d8:e8:09:bc:ed:d7:e9:51:80 openion@openion

分发公钥

把公钥从分发服务器拷贝到其他的服务器各一份。

[openion@openion ~]$ cd .ssh/
[openion@openion .ssh]$ ssh-copy-id -i id_dsa.pub openion@192.168.111.130
# ssh-copy-id为系统自带的shell脚本,可以用来分发公钥。

The authenticity of host '192.168.111.130 (192.168.111.130)' can't be established.
RSA key fingerprint is 93:f3:b4:e5:8c:1c:ac:c9:d2:05:18:81:57:eb:7d:2c.
Are you sure you want to continue connecting (yes/no)? yes       #输入yes在本地添加ssh公钥信息。该信息默认会被添加到本地~/.ssh/known_host文件中。
Warning: Permanently added '192.168.111.130' (RSA) to the list of known hosts.
openion@192.168.111.130's password: 
Now try logging into the machine, with "ssh 'openion@192.168.111.130'", and check in:

.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

添加到别的服务器同上

向服务器分发命令:

[openion@openion ~]$ ssh openion@192.168.111.130 /sbin/ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:0C:29:D8:38:28  
          inet addr:192.168.111.130  Bcast:192.168.111.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fed8:3828/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2809228 errors:0 dropped:0 overruns:0 frame:0
          TX packets:689583 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:3839476092 (3.5 GiB)  TX bytes:323030789 (308.0 MiB)

分发文件:

[openion@openion ~]$ touch openion1 openion2 openion3 openion4 openion5
[openion@openion ~]$ ls
openion1  openion2  openion3  openion4  openion5
[openion@openion ~]$ scp -P22 -r ~/* openion@192.168.111.130:~
openion1                                  100%    0     0.0KB/s   00:00    
openion2                                  100%    0     0.0KB/s   00:00    
openion3                                  100%    0     0.0KB/s   00:00    
openion4                                  100%    0     0.0KB/s   00:00    
openion5                                  100%    0     0.0KB/s   00:00    
##############################################################
[openion@openion ~]$ rsync -avz -P -e 'ssh -p 22' ~/* openion@192.168.111.130:~
building file list ... 
5 files to consider
openion1
       0 100%    0.00kB/s    0:00:00 (xfer#1, to-check=4/5)
openion2
       0 100%    0.00kB/s    0:00:00 (xfer#2, to-check=3/5)
openion3
       0 100%    0.00kB/s    0:00:00 (xfer#3, to-check=2/5)
openion4
       0 100%    0.00kB/s    0:00:00 (xfer#4, to-check=1/5)
openion5
       0 100%    0.00kB/s    0:00:00 (xfer#5, to-check=0/5)

sent 310 bytes  received 130 bytes  880.00 bytes/sec
total size is 0  speedup is 0.00

对服务器推送需要root权限时,解决方法

方法一:

把openion用户配置成sudo权限用户,然后就可以实现通过sudo功能实现普通用户推送只有root才能处理的问题。
具体方式:
1、执行visudo命令开启Defaults requiretty参数。
2、使用ssh如下命令(ssh -t hostname sudo <cmd>)

方法二:

可以把echo、cp、scp命令修改为setuid位在推送文件时就可以使用以上命令(不推荐使用此命令)
chmod 4755 /bin/cp

方法三:

可以配置root用户的免登入认证,但这又会有一定的安全问题(虽然可以防火墙封堵SSH端口),而且通常情况下服务器为禁止root用户登入的,因此此方式虽然简单但是安全性低不推荐使用。

小结:

Top