如何从本地机器向远程集群设置免密连接?
有两种方式来解决这个问题:
1.免密SSH登录。(注意,本小结基于文章http://linuxproblem.org/art_9.html)
你的目标:你想使用OpenSSH实现自动作业提交,因此你需要一个从hostA或者userA自动登录到
hostB或者userB。在这个过程中你不想输入任何密码,因为你想要在shell脚本中调用SSH。
如何去做:首先以userA的身份登录hostA,接着产生一对验证密钥。不需要输入密码:
userA@hostA:~> ssh-keygen -t rsa Generating public/private rsa key
pair.
Enter file in which to save the key (/home/userA/.ssh/id_rsa):
Created directory '/home/userA/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/userA/.ssh/id_rsa.
Your public key has been saved in /home/userA/.ssh/id_rsa.pub.
The key fingerprint is:
3e:4f:05:79:3a:9f:96:7c:3b:ad:e9:58:37:bc:37:e4 userA@hostA
然后以userB的身份登录hostB,使用ssh去产生一个目录 (目录可能本身已经存在,但是没 关系)
userA@hostA:~> ssh -p portB userB@hostB 'mkdir -p .ssh' userB@hostB's
password:
最后将A的新公共密钥附加给hostB的userB:.ssh/authorized_keys 同时最后一次输入 B的密码:
userA@hostA:~> cat .ssh/id_rsa.pub | ssh -p portB userB@hostB'cat >>
.ssh/authorized_keys'.
userB@hostB's password:
从现在开始,你就可以避免从hostA里userA的身份登录hostB里userB时输入密码。
userA@hostA:~> ssh -p portB userB@hostB
2. 你需要将你本地机器(目录./ssh或./ssh2)的公共秘钥拷贝到远程集群上, 这里是你需要执行的命令列表:
local # ssh-keygen -t dsa
local # scp ~/.ssh2/id_dsa.pub oganov@palu.cscs.ch:~/.ssh/tmp.pub
remote # cd ~/.ssh/
remote # ssh-keygen -f tmp.pub -i >> authorized_keys
remote # rm tmp.pub