http://blog.csdn.net/leexide/article/details/17252369

 
 
2013-12-10 22:57 43227人阅读 评论(2) 收藏 举报
 分类:
Linux System(1) 

版权声明:本文为博主原创文章,未经博主允许不得转载。

 

目录(?)[+]

 

一、SSH简介

SSH是一个专为远程登录会话和其他网络服务提供安全性的协议。默认状态下SSH链接是需要密码认证的,可以通过添加系统认证(即公钥-私钥)的修改,修改后系统间切换可以避免密码输入和SSH认证。

二、公钥认证的基本思想:

对信息的加密和解密采用不同的key,这对key分别称作private key和public key,其中,public key存放在欲登录的服务器上,而private key为特定的客户机所持有。

当客户机向服务器发出建立安全连接的请求时,首先发送自己的public key,如果这个public key是被服务器所允许的,服务器就发送一个经过public key加密的随机数据给客户机,这个数据只能通过private key解密,客户机将解密后的信息发还给服务器,服务器验证正确后即确认客户机是可信任的,从而建立起一条安全的信息通道。

通过这种方式,客户机不需要向外发送自己的身份标志“private key”即可达到校验的目的,并且private key是不能通过public key反向推断出来的。这避免了网络窃听可能造成的密码泄露。客户机需要小心的保存自己的private key,以免被其他人窃取,一旦这样的事情发生,就需要各服务器更换受信的public key列表。

三、实验网络拓扑图和实验目的

1、网络拓扑图

如下所示:

2、实现目的

服务器1,服务器2,服务器3能实现彼此无密码登录。

3、补充说明

Linux下修改主机名的完整步骤如下:
第一步:

  1. #hostname Server1

第二步:

  1. 修改/etc/sysconfig/network中的hostname

第三步:

  1. 修改/etc/hosts文件

四、无密码登录实现方式

1、用ssh-keygen创建公钥

(1)在服务器1上执行下面的命令:

  1. [root@Server1 ~]# ssh-keygen -t rsa
  2. Generating public/private rsa key pair.
  3. Enter file in which to save the key(/root/.ssh/id_rsa):
  4. Created directory '/root/.ssh'.
  5. Enter passphrase (empty for no passphrase):
  6. Enter same passphrase again:
  7. Your identification has been saved in/root/.ssh/id_rsa.
  8. Your public key has been saved in/root/.ssh/id_rsa.pub.
  9. The key fingerprint is:
  10. 7b:aa:08:a0:99:fc:d9:cc:d8:2e:4b:1a:c0:6b:da:e4root@Server1
  11. The key's randomart image is:
  12. +--[ RSA 2048]----+
  13. | |
  14. | |
  15. | |
  16. |. |
  17. |o. S |
  18. |++. . |
  19. |+=o. . . |
  20. |o+=oB. o |
  21. |..E==*... |
  22. +-----------------+

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

(2)补充说明:
ssh-keygen:生成秘钥
其中:

-t指定算法
  -f 指定生成秘钥路径
  -N 指定密码

2、查看钥匙

  1. [root@Server1 ~]# ls -l .ssh
  2. 总用量 8
  3. -rw-------. 1 root root 1675 12月 10 22:20 id_rsa
  4. -rw-r--r--. 1 root root 394 12月 10 22:20 id_rsa.pub

可以发现 ssh目录下的两枚钥匙。

3.将公钥复制到被管理机器Server2和Server3下的.ssh目录下(先确保存在这个目录)

  1. [root@server1 .ssh]# scp id_rsa.pubroot@192.168.1.3:~/.ssh/
  2. The authenticity of host '192.168.1.3(192.168.1.3)' can't be established.
  3. RSA key fingerprint is93:eb:f9:47:b1:f6:3f:b4:2e:21:c3:d5:ab:1d:ae:65.
  4. Are you sure you want to continueconnecting (yes/no)? yes
  5. Warning: Permanently added '192.168.1.3'(RSA) to the list of known hosts.
  6. root@192.168.1.3's password:
  7. id_rsa.pub
  8. [root@server1 .ssh]# scp id_rsa.pubroot@192.168.1.4:~/.ssh/authorized_keys
  9. The authenticity of host '192.168.1.4(192.168.1.4)' can't be established.
  10. RSA key fingerprint is93:eb:f9:47:b1:f6:3f:b4:2e:21:c3:d5:ab:1d:ae:65.
  11. Are you sure you want to continueconnecting (yes/no)? yes
  12. Warning: Permanently added '192.168.1.4'(RSA) to the list of known hosts.
  13. root@192.168.1.4's password:
  14. id_rsa.pub

到Server2和Server3目录下执行下面的命令

  1. #cat id_dsa.pub >> ~/.ssh/authorized_keys

4、设置文件和目录权限:

设置authorized_keys权限

  1. $ chmod 600 authorized_keys

设置.ssh目录权限

  1. $ chmod 700 -R .ssh

5、验证使用SSH IP地址的方式无密码访问

  1. [root@server1 .ssh]# ssh 192.168.1.3
  2. Last login: Tue Dec 10 22:34:02 2013
  3. [root@Server2 ~]#
  4. [root@Server2 ~]#
  5. [root@Server2 ~]#

6、验证使用SSH 主机名的方式无密码访问

我们在Server1上将Server2和Server3的IP地址解析为主机名

  1. [root@server1 .ssh]# cat /etc/hosts
  2. 192.168.1.2 Server1
  3. 192.168.1.3 Server2
  4. 192.168.1.4 Server3

我们试试下面这种ssh登录方式:

  1. [root@server1 .ssh]# ssh Server3
  2. The authenticity of host 'server3(192.168.1.4)' can't be established.
  3. RSA key fingerprint is93:eb:f9:47:b1:f6:3f:b4:2e:21:c3:d5:ab:1d:ae:65.
  4. Are you sure you want to continueconnecting (yes/no)? yes
  5. Warning: Permanently added 'server3' (RSA)to the list of known hosts.
  6. Last login: Tue Dec 10 22:34:08 2013

五、注意:

1、文件和目录的权限千万别设置成chmod 777.这个权限太大了,不安全,数字签名也不支持。
2、生成的rsa/dsa签名的公钥是给对方机器使用的。这个公钥内容还要拷贝到authorized_keys
3、linux之间的访问直接 ssh 机器ip
4、某个机器生成自己的RSA或者DSA的数字签名,将公钥给目标机器,然后目标机器接收后设定相关权限(公钥和authorized_keys权限),这个目标机就能被生成数字签名的机器无密码访问了

 
 

最新文章

  1. spring-poi-excle往单元格写入图片
  2. thinkphp 3.23语言包加载
  3. eclipse中jsp文档无语法着色,安装Eclipse Java Web Developer Tools插件
  4. JDBC编程的方式
  5. redis如何安装
  6. BZOJ3748 : [POI2015]Kwadraty
  7. ASPxCallback控件
  8. struct {0}初始化
  9. 一个js排序
  10. react 编写组件 五
  11. Mayor's posters(离散化线段树)
  12. pycharm linux版快捷方式创建
  13. 30号快手笔试(三道ac两道半)————-历史上最大的网络失误orz
  14. GridView的簡單使用
  15. (原)pycharm中debugger时console如何打开
  16. 程序包需要 NuGet 客户端版本“XXXXX”或更高版本,但当前的 NuGet 版本为“XXXXXXXXXX”
  17. ss is one another utility to investigate sockets(特适合大规模tcp链接)
  18. 【RF库测试】算法运算
  19. Oracle定义DES加密解密及MD5加密函数
  20. javascript 图片滚动

热门文章

  1. python读xml文件
  2. Jmeter监控内存及CPU等
  3. sqlserver中计算某个特殊字符在字符串中出现的位置
  4. CF 55D Beautiful numbers (数位DP)
  5. UVA 12325 Zombie'sTreasureChest 宝箱 (分类枚举)
  6. 一些常用的HTML标签
  7. MFC:Unicode和多字节字符集下 CString和char的转化(MFC中)
  8. 如何远程连接Windows server上的MySQL服务
  9. Bootstrap历练实例:可取消的警告
  10. Java基础面试操作题: File IO 文件过滤器FileFilter 练习 把一个文件夹下的.java文件复制到另一个文件夹下的.txt文件