【转】ssh-copy-id帮你建立信任
本原创文章属于《Linux大棚》博客。
博客地址为http://roclinux.cn。
文章作者为roc。
==
对于做运维的同学来说,给两台UNIX/Linux机器建立ssh信任关系是再经常不过的事情了。
不知道大家之前建立信任关系是采用什么方法,反正我是纯手工创建。
如果需要“machineA机器的nameA账号”建立到“machineB机器的nameB账号”的ssh信任关系,达到无需输密码即可登陆的目的,那么我一般是这样做的:
将machineA机器的/home/nameA/.ssh/id_rsa.pub文件的内容拷贝出来 登陆到machineB机器的/home/nameB/.ssh中,如果不存在则创建authorized_keys文件,
将第1步中的内容追加到文件尾部。 检查authorized_keys文件的权限,确保其group/other位没有w权限 登陆到machineA机器,测试ssh信任关系是否建好
其实上面的添加机器信任关系的方法很不友好,需要全手工操作,而且要两台机器之间来来回回切换,且操作正确性完全由人保证,很容易出现问题和错误。
现在,隆重推出“SSH信任关系自动化建立工具”:ssh-copy-id。(这是一个划时代的时刻,让我学会了使用工具^_^)
【五分钟学会ssh-copy-id】
在不建立ssh信任关系的情况下,从machineA机器的nameA登陆到machineB机器的nameB,可以看出是需要输入密码的:
[nameA@machineA]$ ssh nameB@machineB -p
nameB@machineB's password:
我们现在就用新学到的命令建立信任关系,但是却提示“没有找到标识”,这是因为我们的nameA账号还没有自己的公钥私钥:
[nameA@machineA]$ ssh-copy-id nameB@machineB
/usr/bin/ssh-copy-id: ERROR: No identities found
我们需要现为nameA账号建立自己的公钥私钥,建立好之后,会在/home/nameA/.ssh里多出id_rsa(私钥)和id_rsa.pub(公钥)两个文件:
[nameA@machineA]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/nameA/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/nameA/.ssh/id_rsa.
Your public key has been saved in /home/nameA/.ssh/id_rsa.pub.
The key fingerprint is:
bb:3b::be:5d::ab:::ec:::c6:a3:7d: nameA@machineA
The key's randomart image is:
+--[ RSA ]----+
| |
| |
| |
| . . |
| .X. o . |
| .o. + |
| .*+.o |
| +++C+o E |
| . +C++ . |
+-----------------+
好了,准备工作就绪,我们开始建立信任关系:
[nameA@machineA]$ ssh-copy-id nameB@machineB
ssh: connect to host machineB port : Connection refused
悲剧,新的错误提示又来了,原来我们的B机器的sshd的服务端口不是22,而是22000,但是ssh-copy-id命令却不知道这个信息。这可如何是好。
我们试试加个-p参数设置下端口:
[nameA@machineA]$ ssh-copy-id nameB@machineB -p
ssh: connect to host machineB port : Connection refused
还是不好使,-p参数完全没有被ssh-copy-id命令识别。
如果你man ssh-copy-id就可以看到它根本就没有这个选项的。
好吧,不卖关子了,其实解决办法一点也不复杂,只是用了一个小技巧,那就是:
[nameA@machineA]ssh-copy-id "-p 22000 nameB@machineB"
nameB@machineB's password:
[nameB@machineB]
大功告成,终于可以无密码登陆了:
[nameA@machineA]$ ssh nameB@machineB -p
[nameB@machineB]$
其实ssh-copy-id是一个普普通通的脚本文件:
[nameA@machineA]$ which ssh-copy-id
/usr/bin/ssh-copy-id
[nameA@machineA]$ file /usr/bin/ssh-copy-id
/usr/bin/ssh-copy-id: POSIX shell script text executable
如果你有兴趣,可以读一读这个脚本,只有短短50行,不过里面却有不少shell编程技巧可以学习。
谢谢!
【转】ssh-copy-id帮你建立信任的更多相关文章
- ssh-copy-id帮你建立信任
一.ssh-keygen -t rsa [nameA@machineA]$ ssh-keygen -t rsa Generating public/private rsa key pair. Ente ...
- ssh两台机器建立信任关系无密码登陆
在建立信任关系之前先看看基于公钥.私钥的加密和认证. 私钥签名过程 消息-->[私钥]-->签名-->[公钥]-->认证 私钥数字签名,公钥验证 Alice生成公钥和私钥,并将 ...
- 两台linux之间建立信任关系,实现免密码ssh远程登录或scp数据上传
两台linux之间建立信任关系,实现免密码远程登录或数据上传 1.执行ssh-keygen命令,生成建立安全信任关系的证书: linux1上:执行命令 ssh-keygen -t rsa 在程序提 ...
- ssh两台主机建立信任关系
A主机(10.104.11.107) B主机(10.104.11.128) A: ssh-keygen -t rsa [root@H0f .ssh]# ssh-keygen -t rsa Gene ...
- Linux/Unix双机建立信任教程
Linux/Unix双机建立信任教程 一 需要建立信任关系的2台主机都执行生成密钥输入ssh-keygen -t rsa之后全部默认回车,这样就会在/root/.ssh下生成密钥文件 [root@pl ...
- linux建立信任关系
(1).切换到需要建立信任关系的用户(2).执行命令:ssh-keygen -d,然后一直回车.该命令会在用户home目录下生成一个隐藏的.ssh目录.目录里面有两个文件:id_dsa.id_dsa ...
- J2EE进阶(七)利用SSH框架根据数据表建立model类
J2EE进阶(七)利用SSH框架根据数据表建立model类 前言 在利用SSH框架进行项目开发时,若将数据库已经建好,并且数据表之间的依赖关系已经确定,可以利用Hibernate的反转功能进行mode ...
- linux机器间建立信任关系
linux机器间建立信任关系 如何建立信任关系 在shell脚本中,需要使用scp命令将本地的文件复制到另一台机器中备份.但通常执行scp命令后都需要输入用户密码,这样在定时自动执行shell脚本中就 ...
- 通过跳板机建立信任,对多个tomcat服务统一安装部署(shell编写)
unifyDeploy 自动化统一安装部署 系统版本: unifyDeploy0.1 文件编号: 0.1 发布日期: 2014-06-26 编 制: WangYong 版权所有 内部资料注意保密 ...
随机推荐
- Openstack 集群,及常用服务的 高可用 haproxy配置
一.介绍 配置文件位置(yum 安装):/etc/haproxy/haproxy.cfg 全局配置 #------------------------------------------------- ...
- numpy.random.uniform()
numpy.random.uniform均匀分布 2018年06月19日 23:28:03 徐小妹 阅读数:4238 numpy.random.uniform介绍: 1. 函数原型: numpy ...
- Codeforces Beta Round #72 (Div. 2 Only)
Codeforces Beta Round #72 (Div. 2 Only) http://codeforces.com/contest/84 A #include<bits/stdc++.h ...
- Mac 动态库加载不上
OC xcode can't found xxx.dylib 1 targer- build phase :link binary with library添加动态库 注意不要将后边的选项选成opti ...
- 将jsp页面转pdf
网上好多思路啊,大部分都是将html转pdf,这种方法我试了很多,都不能很好地支持jsp,稍微复杂一点根本不起作用,也不知他们的博客都怎么写的,还真是应了那句话天下博客一大抄,自己都不验证的 下面说下 ...
- swift 带有下划线的UIbutton
import UIKit /// 带下划线的Button class UnderlineButton: JYBaseButton { /// 下划线高度 var underLineHeight:CGF ...
- swift - UIWebView 和 WKWebView(iOS12 之后替换UIWebView)
1.iOS12 之前 使用 UIWebView 1> private lazy var webV : UIWebView = { let v = UIWebView(frame: self.vi ...
- Httpclient 表单,json,multipart/form-data 提交 ---总结常用的方法
最近在项目中,一直在使用HttpClient 中的方法,这里我进行一些方法的汇总,也是结合了一些大牛写的代码,以备不时之需 官话:HttpClient 是Apache Jakarta Common 下 ...
- 测试SD卡读写速度
执行测试命令之前,一定先清除缓存:# echo 3> /proc/sys/vm/drop_caches SD卡读取的速度# echo 3> /proc/sys/vm/drop_caches ...
- TableView中Label自适应高度
//Xcode6.3以后label自适应需要添加两个属性 _tableView.rowHeight = UITableViewAutomaticDimension; //给予预计行高 _tableVi ...