linux机器间建立SSH信任关系
ssh信任关系,是指一台服务器上的一个用户信任客户端的一个用户,允许这个用户不输入密码登录,另一个说法叫做public_key_auth。实际上就是证书信任。
实际步骤
步骤 | DSA | RSA |
1在机器a上, 在用户home目录下生成一个隐藏的.ssh目录。 目录里面有两个文件: id_<X>sa、id_<X>sa.pub | ssh-keygen -d,然后一直回车
将会在~/.ssh目录下生成两个文件,id_dsa、id_dsa.pub,分别是私钥和公钥。注意id_dsa文件的权限必须是600或644。 | ssh-keygen -t rsa,然后一直回车
将会在~/.ssh目录下生成两个文件,id_rsa和id_rsa.pub,分别是私钥和公钥。注意id_rsa文件的权限必须是600或644。 |
2在机器b上,authorized_keys文件加上机器a上的id_<X>sa.pub文件内容. | 到服务器用户的~/.ssh目录下,创建一个文件authorized_keys2(如果已经有了,直接编辑),把id_dsa.pub里的内容(只有一行文本)加到文件里面保存。 | 到服务器用户的~/.ssh目录下,创建一个文件authorized_keys(如果已经有了,直接编辑); 把机器a中id_rsa.pub里的内容(只有一行文本)加到机器b中authorized_keys文件里面保存。 |
3在机器b上,/etc/hosts或者/etc/hosts.allow加上a的IP地址. |
|
|
4那么机器a可以SSH访问机器b. ssh username@remotehost | ssh username@b | ssh username@b |
5.在机器a上,authorized_keys文件加上机器b上的id_<X>sa.pub文件内容. | 到服务器用户的~/.ssh目录下,创建一个文件authorized_keys2(如果已经有了,直接编辑),把id_dsa.pub里的内容(只有一行文本)加到文件里面保存。 | 到服务器用户的~/.ssh目录下,创建一个文件authorized_keys(如果已经有了,直接编辑),把id_rsa.pub里的内容(只有一行文本)加到文件里面保存。 |
6.在机器a上,/etc/hosts或者/etc/hosts.allow加上b的IP地址. |
|
|
7在两个Linux之间建立信任关系,互相访问不用输入密码 | ssh username@a ssh username@b | ssh username@a ssh username@b |
注释: authorized_keys 不能自动生成的话,就自己手工copy一份公共秘钥文件的形式.
注意事项:
成功之后用ssh或者scp命令都不用输入密码【建立后第一次访问可能要确认一次】,如果不成功可能原因如下:
1、.ssh目录以及目录内文件权限不正确
.ssh目录权限为700,目录内文件权限为644 (600也可以)
2、复制公钥文件id_dsa.pub的时候复制了多余的字符,比如空格或者换行,所以我上面演示的例子用了一种看起来比较麻烦但算是安全的做法.
参考文献:
http://www.2cto.com/os/201211/165977.html
http://www.cnblogs.com/xianfish/archive/2010/04/01/1702536.html