linux的秘钥产生与服务器无关,只和加密的方式(采用rsa或dsa)还有passphrase(密码短语,在生成秘钥的时候输入)有关。

如果是这样,同一对秘钥可以使用在多台服务器上,因为对于服务器和客户端来说,他们在通信的时候只需验证秘钥和公钥是否匹配。

即存在一个global的公钥存放在ssh服务器上,而多台客户端则使用的同一秘钥登陆ssh服务器上。

测试环境:本机windows使用secureCRT客户端,两台redhat 6.3的虚拟机(linuxA和B,192.168.1.2/3)。虚机与主机使用桥接网络,处于同一局域网。

测试过程:

注:公钥一般是pub结尾,但是服务器验证的文件是authorized_key,所以要把pub文件的内容转入authorized_key。pub文件本身没用。

1、使用CRT生成秘钥对,将公钥上传到linuxA,成功登陆后,cpoyA机中的公钥至B机中,实现CRT自动登陆B机,验证公钥为通用。

首先使用CRT生成秘钥:

1.使用SecureCRT创建私钥和公钥(Set Passphrase 可以设置为空密码,比较方面验证)

SecureCRT: Quick Connect -> Authentiation -> Public Key -> Properties -> Create Identity File -> DSA/RSA -> Set Passphrase -> Done

这个时候在指定目录会生成两个文件,例如,私钥my_rsa和公钥my_rsa.pub

2.linux服务器上建立.ssh目录,一般情况下,已经有这个目录(更改权限很重要,认证的时候权限不是700不给通过)

# mkdir /root/.ssh

# chmod 700 /root/.ssh

3.将公钥 my_rsa.pub 传到linux服务器,将SSH2兼容格式的公钥转换成为Openssh兼容格式(查看/etc/ssh/sshd_config文件的#AuthorizedKeysFile这行是否为ssh/authorized_keys,有说法是自ssh3版本之后就不默认为ssh/authorized_keys2了)

# ssh-keygen -i -f Identity.pub >> /root/.ssh/authorized_keys

# chmod 600 /root/.ssh/authorized_keys

4.在SecureCRT里面设置登录模式为PublicKey,并选择刚刚创建的my_rsa文件作为私钥

5.重启Linux服务器上SSH服务器(测试貌似不用重启服务也能生效)

#service sshd restart 或者 /etc/rc.d/init.d/sshd restart

此阶段,测试成功,A和B机使用的同一对authorized_keys2,CRT都能实现自动登陆。

2、在B机中生成秘钥对,将公钥复制到A中,实现B机自动登陆A,然后将B的秘钥传过去,把A的authorized_keys2内容写入B的authorized_keys2文件中,实现A自动登陆B。

步骤1: 用 ssh-key-gen 在本地主机上创建公钥和密钥

local-host$ ssh-keygen -t  rsa

Enter file in which to save the key (/home/jsmith/.ssh/id_rsa):[Enter key]

Enter passphrase (empty for no passphrase): [Press enter key]

Enter same passphrase again: [Pess enter key]

Your identification has been saved in /home/jsmith/.ssh/id_rsa.

Your public key has been saved in /home/jsmith/.ssh/id_rsa.pub.

The key fingerprint is: 33:b3:fe:af:95:95:18:11:31:d5:de:96:2f:f2:35:f9

local-host

步骤2: 用 ssh-copy-id 把公钥复制到远程A主机上

local-host$ ssh-copy-id -i ~/.ssh/id_rsa.pub  root@192.168.1.2

remote-host‘s password:

Now try logging into the machine, with ―ssh ?remote-host‘‖, and check in:

.ssh/authorized_keys to make sure we haven‘t added extra keys that you weren‘t expecting.

[注: ssh-copy-id 把密钥追加到远程主机的 .ssh/id_rsa 上.]

步骤3: 直接登录A远程主机

local-host$ ssh root@192.168.1.2

Last login: Sat Mar  8 12:37:48 2014 from 192.168.1.3

[注: SSH 不会询问密码.]

然后通过sftp,将B机的id_rsa传到A机,把A的authorized_keys2传过来。此时A和B都可互相自动登陆。

测试结果:验证猜想成功,最好是有第三台linux再可以验证下就好了。

补充安全问题:由于.ssh文件夹和privatekey都权限为700和600,同时sftp服务器只开通sftp登陆权限和控制home文件目录,只要妥善保管privatekey,在ssh协议下是没有安全顾虑的。参见SSH认证原理(http://qujunorz.blog.51cto.com/6378776/1371344)

https://www.ibm.com/developerworks/cn/linux/security/openssh/part1/

转载于:https://blog.51cto.com/xiexf/1962504

Linux多台服务器共用密钥ssh自动登陆相关推荐

  1. linux同步某台服务器,linux 两台服务器之间开机自动同步指定目录下的文件

    linux 两台服务器之间开机自动同步指定目录下的文件 服务器B(172.17.166.11)上开机或者重启会自动拉取服务器A(172.17.166.10)上指定目录下所有文件 1.创建服务器B到服务 ...

  2. linux服务器拷贝目录文件夹,linux两台服务器之间文件/文件夹拷贝

    linux两台服务器之间文件/文件夹拷贝 跨服务器拷贝需要用到的命令是scp. ----------------------拷贝文件夹--------------------------------- ...

  3. linux部署多个tomcat服务,Linux 一台服务器部署多个tomcat

    linux系统下安装两个或多个tomcat 编辑环境变量:vi /etc/profile 加入以下代码(tomcat路径要配置自己实际的tomcat安装目录) ##########first tomc ...

  4. linux两台服务器传输,Linux两台服务器之间高速数据传输命令:scp应用详解

    Linux两台服务器之间高速数据传输命令:scp应用详解 Linux scp命令用于Linux之间复制文件和目录到另外一台,这个命令在多台服务器之间传输还是非常有用的,速度也是非常快的.比window ...

  5. shell实现SSH自动登陆

    前言 公司开发使用docker,每次登陆自己开发机总要输入 ssh user_name@ip_string,然后再确认输入password,手快了还经常会输错.作为一个懒人,肯定要找一个取巧的方式,查 ...

  6. shell脚本实现无密码交互的SSH自动登陆

    shell脚本实现无密码交互的SSH自动登陆 ssh连接远程主机时候询问密码,跟su.sudo命令的默认行为一样,是不从stdin读入数据的,据称是为安全考虑,但是有时候在脚本当中确实需要无人守值的登 ...

  7. ssh自动登陆和scp自动拷贝文件

    Expect是一个用来处理交互的命令.可以将交互过程写在一个脚本上,使之自动化完成.比如:ssh登录,ftp登录等都符合交互的定义.1.安装 # sudo apt-get install expect ...

  8. 复制密钥文件到另一台服务器,使用所有ssh密钥从第三台服务器在两台服务器之间远程复制...

    我正在用python编写一个部署脚本,但是在我完成它之后,我发现可能不可能实现我的想法.在 情况是这样的.在 我有三个主人.在主机1:Ubuntu 12.04 主机2:SUSE Linux Enter ...

  9. linux两台服务器间复制文件scp

    换服务器或添加服务器时常会用到两台服务器之间复制文件,这个时候就可以使用scp命令. scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是 ...

最新文章

  1. Android Intent hasExtra()方法的使用
  2. iOS--优秀博客记录
  3. AAC规格分类和下载地址
  4. 请MM吃饭之工厂模式实现
  5. 激光光凝后容易出现频繁闪光的原因
  6. python统计段落单词词频_使用Python统计文件中词频,并且生成词云
  7. MDX Step by Step 读书笔记(四) - Working with Sets (使用集合)
  8. 配置quick-cocos2d-x-develop OpenGL version too old
  9. /dev/shm目录下产生大量的ora_$ORACLE_SID的二进制文件
  10. springboot集成quartz,简版-通俗易懂
  11. 10G ocp 题库
  12. Junit4测试报错:java.lang.NoClassDefFoundError: org/junit/runner/manipulation/Filter
  13. 东华大学计算机专业在哪个校区,东华大学有几个校区及地址
  14. axf下不了 keil5jlink_keil无法生成axf文件之解决方法
  15. AI 技术本身的一些优势,比如它能够从大量数据里去总结背后的规律
  16. 机器学习(Machine Learning)大家与资源
  17. 被问:这个BUG为什么没测出来?该如何回答
  18. python制作相册影集_最新的有趣开源,Python制作抖音特有的重影彩色图片!
  19. Oracle数据库 SQL语句总结大赏
  20. 如何查看linux进程?

热门文章

  1. 浅谈TCP的窗口字段
  2. 软考培训 - 2014年3月1日信息系统项目管理师开班
  3. NET 应用架构指导 V2 学习笔记(二十) 业务组件设计指导
  4. 1.Hello,World all the time
  5. Python元组常用的操作
  6. 7月11日任务 shell介绍、shell结构和执行 、date命令用法、shell脚本中的变量
  7. 中小型商业银行的软件安全测试之道
  8. sql server优化策略
  9. RANK() OVER(PARTITION BY deptno ORDER BY empno)
  10. DotNetNuke与MemberShip的结合(五年版)第三步修改HttpModule.DNNMembership