有两种方式来解决这个问题:
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