linux機器間建立信任關系
在shell腳本中,需要使用scp命令將本地的文件復制到另一台機器中備份。但通常執行scp命令后都需要輸入用戶密碼,這樣在定時自動執行shell腳本中就不適用了。
在兩台機器的兩個用戶之間建立安全的信任關系后,可實現執行scp命令時不需要輸入用戶密碼。(該方法對ssh也適用) 以下將介紹如何在兩台機器間建立信任關系,為了方便說明,我們將執行scp命令的機器叫做client,scp命令操作的遠端機器叫做server。假設兩個機器的賬戶都是work(其他賬戶也行,為了討論方便假設了一個)。
1、在機器Client上work用戶執行ssh-keygen命令,生成建立安全信任關系的證書。
[work@Client work]# ssh-keygen -b 2048 -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/work/.ssh/id_rsa): <– 直接輸入回車
Enter passphrase (empty for no passphrase): <– 直接輸入回車
Enter same passphrase again: <– 直接輸入回車
Your identification has been saved in /work/.ssh/id_rsa.
Your public key has been saved in /work/.ssh/id_rsa.pub.
The key fingerprint is:
49:9c:8a:8f:bc:19:5e:8c:c0:10:d3:15:60:a3:32:1c root@A
[work@Server work]#
注意:在程序提示輸入passphrase時直接輸入回車,表示無證書密碼。
上述命令將生成私鑰證書id_rsa和公鑰證書id_rsa.pub,存放在用戶根目錄的.ssh子目錄中。
2、將公鑰證書id_rsa.pub復制到機器Server的work根目錄的.ssh子目錄中,同時將文件名更換為authorized_keys。
[work@Client work]# scp -p .ssh/id_rsa.pub work@192.168.3.206:/work/.ssh/authorized_keys
work@192.168.3.206′s password: <– 輸入機器Server的work用戶密碼
id_rsa.pub 100% |**************************| 218 00:00
[work@Client work]#
執行完上面兩步后,就在機器Client的work和機器Server的work之間建立安全信任關系。下面我們看看效果:
[work@Client work]# scp -p text work@192.168.3.206:/work
text 100% |**************************| 19 00:00 //這時不需要輸入密碼了
[work@Client work]#
同一台機器上面scp也需要設立信任關系。。。囧
已經存在的key,直接cat .ssh/id_rsa.pub >>.ssh/authorized_keys ,就搞定啦~~~
無法建立信任關系時排錯步驟
1.AB主機名是默認的Localhost,如果AB之間的主機名相同,可能會導致無法成功。要修改主機名用hostname 命令,修改/etc/sysconfig/network,then restart your server.
2.查看SSH配置文件/etc/ssh/ssh_config,找到IdentityFile所指定的文件是什么,有的不是默認的id_rsa,這里指定的文件要和第一部分生成的文件名要相同,這里是id_rsa.
3.查看B機authorized-keys的文件權限是否為600或者644 (linux文件權限詳解),如直接在server機器上vi或touch建立文件authorized_keys,可能會導致信任關系無法建立。
4.查看/var/log/secure日志,里面應該有一些蛛絲馬跡可以供你參考
