首页 技术 正文
技术 2022年11月10日
0 收藏 707 点赞 3,792 浏览 2144 个字

本原创文章属于《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编程技巧可以学习。

谢谢!

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,489
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,904
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,737
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,490
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,128
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,291