考虑这个问题:
A、B两人分别在两座岛上。B生病了,A有B所需要的药。C有一艘小船和一个可以上锁的箱子。C愿意在A和B之间运东西,但东西只能放在箱子里。只要箱子没被上锁,C都会偷走箱子里的东西,不管箱子里有什么。如果A和B各自有一把锁和只能开自己那把锁的钥匙,A应该如何把东西安全递交给B?
今天搞了一下ssh的免口令登录,让我联想到这个问题.
显然这个问题应该是以ssh的RSA加密过程抽象出来的.A和B代表要通信的双方. C代表通信过程中可能存在的第三方,随时待命截获未加密的信息.两把锁代表AB各自的公钥,钥匙代表AB双方的私钥.
而设置ssh免口令登陆的过程也像极了问题的解答.
问题描述: 两台计算机(计算机名为node1和node2, 其中用户名分别为user1和user2)构成局域网, 因为MPI并行计算要ssh实现免口令远程登陆.
1. 修改各个节点的hosts文件, 如下:
192.168.1.101 node1 server
192.168.1.102 node2
2.各个节点生成各自的公钥和私钥
$ ssh-keygen -t rsa
各个节点运行结束后,会在主目录中出现一个.ssh隐藏目录. 目录中有id_rsa和id_rsa.pub两个文件
其中id_rsa为私钥, id_rsa.pub为公钥
在RSA算法中,公钥加密用,私钥解密用
3.现在正如问题的解答中描述的那样,把公钥放在一起. 放在一起的文件叫授权文件(authorized_keys).
在node2上,将node2的公钥拷贝给node1
scp ~/.ssh/id_rsa.pub
user1@node1:~/.ssh/authorized_keys
这一步用U盘也可以
在node1上,将node1的公钥也写进文件authorized_keys中
cat ~/.ssh/id_rsa.pub >> authorized_keys
再将authorized_keys文件拷贝到node2中,同样也可以使用U盘
scp ~/.ssh/authorized_keys
user2@node2:~/.ssh/
4.设置authorized_keys的权限为600或者644
两个节点上:
chmod 644 ~/.ssh/authorized_keys
至此,ssh免口令登录设置完成.
检验一下: ssh
user2@node2
看是不是不再需要口令就能登录了
注意: 1.使用scp的时候要特别注意用户名,不然就是一大堆的permission denied
2.目的主机名接冒号然后紧跟路径名,中间不要有空格
3.一看到permission denied就以为是权限问题,然后就想用root登录,但是口令总是不对.可能跟ssh的配置文件有关
4.也可以在ssh的配置文件中设置不需要口令登录,那样所有人都可以远程登录你的计算机了,多不安全啊,所以才搞得这么复杂?
234





