我正在设置一些部署自动化,我试图使用Ruby的Capistrano通过ssh远程执行命令。 我用cygwin的openssh在我用作testing受害者的盒子上运行sshd。
尽pipe如此,这将需要在每个受害者箱上使用相同的用户,并使用相同的密码,这显然是一个坏主意。
因此,我希望能够进行公共密钥authentication,但是经过几天我的头撞墙,我没有成功。 任何人都可以指向我在网上成功的指导来完成这个?
我觉得:
ssh username@victim ,我不应该被要求input密码…对吗? 这是失败的一块; 我被要求input密码。 要禁用密码validation,您需要编辑受害者的sshd_config并设置PasswordAuthentication = no
或者在霸主上编辑ssh_config,或使用-o选项停止提供密码authentication。
您可以使用ssh -v -v -v ...更清楚地查看发生的事情。
编辑
我熟悉使用Putty,puttygen和pageant设置SSH公钥authentication,但不熟悉OpenSSH工具。 有了OpenSSH,我相信这个过程是
$ ssh-keygen -t rsa
然后将~/.ssh/id_rsa.pub到服务器的~/.ssh/authorized_hosts ,确保文件的权限为600,目录的权限为700。
ssh-keygen手册页应解释如何生成不受任何通行短语保护的私钥。 如果你这样做,你永远不会input密码短语,但它是不安全的。 如果您设置了身份validation代理,那么我相信在“霸主”的每个会话中只需要一次密码。 如果您没有密码短语,我认为没有必要设置身份validation代理,应该只是读取私钥而不提示input密码。