设置ssh无密码登录

利用ssh-keygen来设置ssh无密码登录 

2011-03-21 17:33:10|  分类: linux 应用 |  标签:ssh   |字号 订阅

客户做安全检查,认为telnet和rsh均有安全漏洞,要求整改所有系统的访问方式为ssh方式(其实,无论这些安全检查的人员还是客户都不明白不安全的意义是什么?)。

传统的网络服务程序,如FTP、POP和Telnet其本质上都是不安全的;因为它们在网络上用明文传送数据、用户帐号和用户口令,很容易受到中间人(man-in-the-middle)攻击方式的攻击。就是存在另一个人或者一台机器冒充真正的服务器接收用户传给服务器的数据,然后再冒充用户把数据传给真正的服务器。或者使用网络抓包工具进行数据分析,据说可以分析出用户密码等资料。

ssh是专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。而且ssh传输数据过程是经过压缩的,也就可以在一定程度上缓解网络压力。

这就遇到一个问题,那就是大量脚本使用rsh方式调用,修改ssh后要求脚本运行以及其他各系统间切换均需要避免密码输入和ssh认证。否则十几台机器,甚至几十台几百台机器的日常巡检和问题定位将受到灾难性的打击。

1. 创建公钥信息:
#ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (<UseHome>/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in <UseHome>/.ssh/id_rsa.
Your public key has been saved in <UseHome>.ssh/id_rsa.pub.
The key fingerprint is:
ba:2c:77:eb:6d:aa:aa:d8:37:08:2f:b1:b9:e8:5a:2f <UseName>@<HostName>

输入后,会提示创建.ssh/id_rsa、id_rsa.pub的文件,其中第一个为密钥,第二个为公钥。过程中会要求输入密码,为了ssh访问过程无须密码,可以直接回车

2. 部署信息
拷贝id_rsa.pub中的内容到需要访问的主机,并建立~/.ssh/authorized_keys文件,将先前的id_rsa.pub拷贝到目标机。
cat ~/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxhdf+JIMlwvtUML8Xe74A1SXDIVn4Evv1HjxoxJQPmzAzq5ZdADsfKLwD/amPLlLDycNJWp/qCghF9DgIDK72+0Ze/PF+Fqyy8Ii8a/Qi7rIKw/j5xk8cBmT9uUDYaksnrgbP
wbFo7QMTAt3yJG+64410vj0qRTZz+361Vc32hAzqIYwRlse7NMsvaAPzKqs3RtSg+TsBuKxPTDMKe71MH0fb6UsduLZ4+nLOi3J7Fhck6erE67+rmOK/4D0M+FTF699nAsvusUMu2bs0MV7zFgrNb+PLma5+uaKYT4JMeM4PRsj9TOaik
evGe077LY0wrnslaW/PNHjFYBxghY2tQ== <UseName>@<HostName>


3. ssh访问
使用ssh <IP/HOSTNAME>进行访问,第一次需要保存ssh认证信息,以后则可以自动登录,其他相关ssh相关程序诸如scp等也可以无需密码

# ssh <TargetHost>
The authenticity of host '<TargetHost> (<TargetIP>)' can't be established.
RSA key fingerprint is 34:b9:92:06:53:e6:91:4d:47:92:73:57:78:6a:5d:09.
Are you sure you want to continue connecting (yes/no)?yes
Warning: Permanently added '<TargetHost>,<TargetIP>' (RSA) to the list of known hosts.

这是因为首次访问后,ssh会在.ssh/known_hosts中保存各个认证过的主机信息:
# cat ~/.ssh/known_hosts
<HostName>,<HostIP> ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6bRsr8LI8qg/kW8RvW2BaEXwKMURzpkl0FRKnH2cm460wPNGqH33RyrIY8lT23If0ZuT7gOAuz57d5GXAawl+NCFmkl2VH+lKJuma89xCGuMU0dbAcrl
chWDk554TEMm1WwiQ/fJdJKdr0ZkNVanDNoIxQuIOEoEzO0Auwr3OvXIaSM+exuLQa3v8hhiefZTtzC3Rc9jVJj0w3CiV/82qhBwXNjNVy/WFoFLZsJ8IsgoH8EnlhL8GBpoAMmdPNUsMpjYqfayHY+17i5zRhabG5ayXc2MeJs6yWMx1
0HH0kLbepUMX/eralAWp69nPvEsK8v4cpjeJfXa/uF/DIo/lQ==

4. 多机器部署
根据部署情况可以发现实际上部署简单,但是多一台机器实际上就多了一个阶乘的操作次数。根据原理可以简化部署方案,比如
a) 先全部机器独立运行ssh-keygen -t rsa
b) 输出所有机器的id_rsa.pub到独立文件
c) 将所有id_rsa.pub信息部署到所有机器的authorized_keys文件中
d) 激活一台机到所有目标机器的访问,包括对自己的,使known_hosts文件中包括所有维护主机信息
e) 传递known_hosts到所有主机对应位置。
这一些的操作最好在rsh没有被禁用前部署和调整,可以减轻很多手工操作

限制ip登录:
[root@localhost mobihq]# cat /etc/hosts.allow
#
# hosts.allow This file describes the names of the hosts which are
# allowed to use the local INET services, as decided
# by the '/usr/sbin/tcpd' server.
#
sshd:120.193.9.:allow
sshd:192.168.3.:allow
sshd:120.193.10.:allow
sshd:210.51.244.:allow
sshd:211.138.113.:allow
sshd:211.141.86.:allow
sshd:211.141.110.:allow
sshd:211.90.246.:allow
sshd:221.130.58.50:allow
sshd:all:deny
[root@localhost mobihq]#

猜你喜欢

转载自tianyihuyidao9.iteye.com/blog/1397445