《ssh-copy-id帮你建立信任》–linux命令五分钟系列之四十一
2013-08-15 15:55
387 查看
转载自:http://roclinux.cn/?p=2551
对于做运维的同学来说,给两台UNIX/Linux机器建立ssh信任关系是再经常不过的事情了。不知道大家之前建立信任关系是采用什么方法,反正我是纯手工创建。如果需要“machineA机器的nameA账号”建立到“machineB机器的nameB账号”的ssh信任关系,达到无需输密码即可登陆的目的,那么我一般是这样做的:
如果你man ssh-copy-id就可以看到它根本就没有这个选项的。好吧,不卖关子了,其实解决办法一点也不复杂,只是用了一个小技巧,那就是:
对于做运维的同学来说,给两台UNIX/Linux机器建立ssh信任关系是再经常不过的事情了。不知道大家之前建立信任关系是采用什么方法,反正我是纯手工创建。如果需要“machineA机器的nameA账号”建立到“machineB机器的nameB账号”的ssh信任关系,达到无需输密码即可登陆的目的,那么我一般是这样做的:
1 将machineA机器的/home/nameA/.ssh/id_rsa.pub文件的内容拷贝出来 2 登陆到machineB机器的/home/nameB/.ssh中,如果不存在则创建authorized_keys文件, 将第1步中的内容追加到文件尾部。 3 检查authorized_keys文件的权限,确保其group/other位没有w权限 4 登陆到machineA机器,测试ssh信任关系是否建好其实上面的添加机器信任关系的方法很不友好,需要全手工操作,而且要两台机器之间来来回回切换,且操作正确性完全由人保证,很容易出现问题和错误。现在,隆重推出“SSH信任关系自动化建立工具”:ssh-copy-id。(这是一个划时代的时刻,让我学会了使用工具^_^)【五分钟学会ssh-copy-id】在不建立ssh信任关系的情况下,从machineA机器的nameA登陆到machineB机器的nameB,可以看出是需要输入密码的:
[nameA@machineA]$ ssh nameB@machineB -p 22000 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:14:be:5d:45:ab:72:27:ec:93:21:c6:a3:7d:77 nameA@machineA The key\'s randomart image is: +--[ RSA 2048]----+ | | | | | | | . . | | .X. o . | | .o. + | | .*+.o | | +++C+o E | | . +C++ . | +-----------------+好了,准备工作就绪,我们开始建立信任关系:
[nameA@machineA]$ ssh-copy-id nameB@machineB ssh: connect to host machineB port 22: Connection refused悲剧,新的错误提示又来了,原来我们的B机器的sshd的服务端口不是22,而是22000,但是ssh-copy-id命令却不知道这个信息。这可如何是好。我们试试加个-p参数设置下端口:
[nameA@machineA]$ ssh-copy-id nameB@machineB -p 22000 ssh: connect to host machineB port 22: 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 22000 [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帮你建立信任》–linux命令五分钟系列之四十四
- ssh-copy-id帮你建立信任 免密码登录Linux
- linux命令学习网站---http://man.linuxde.net/ssh-copy-id
- ssh-copy-id帮你建立信任
- linux学习之ssh-copy-id及其替代命令
- ssh-copy-id命令_Linux ssh-copy-id 命令用法详解:把本地的ssh公钥文件安装到远程主机对应的账户下
- 利用ssh-copy-id和服务器建立信任
- Linux命令之远程登录/无密码登录-ssh,ssh-keygen,ssh-copy-id
- 《神探tcpdump第七招》-linux命令五分钟系列之四十一
- Linux下通过ssh-keygen和ssh-copy-id命令实现ssh无密码登录访问
- Linux下通过ssh-keygen和ssh-copy-id命令实现ssh无密码登录访问
- linux学习笔记--ssh-copy-id命令
- linux 命令系列之 userdel ,ID,su(27)
- Linux下MPICH2集群系统安装手册(采用建立信任ssh)
- 《zip命令》-linux命令五分钟系列之九
- 《cut命令》-linux命令五分钟系列之十九
- 《nslookup通往DNS的桥梁》-linux命令五分钟系列之三十三
- 《gzip命令》-linux命令五分钟系列之七
- MAC 添加ssh-copy-id的命令