我一直试图启动无密码的SSH不成功。 我已经能够find的文件有点点。 至于生成公钥和私钥,我尝试了两种不同的方法:1.使用puttygen生成密钥; 2.使用服务器的ssh-keygen创build密钥。 这介绍了我的第一个问题。 在本地机器上生成密钥很重要吗? 我所看到的大多数文档都指出这一步是在本地机器上完成的,但没有说明为什么或者这是否是强制性的。
从这一点看,这个过程似乎是将公钥移动到服务器的.ssh文件夹,并使用cat命令来joinauthorized_keys和新的公钥。 据我所知,只要SSH程序configuration为使用密钥,那么你应该能够不使用密码login。 不幸的是,我还没有成功。 我的理解过程是否正确? 什么可能导致设置不起作用? 我对ssh的理解有限,所以感觉有点像鱼。 谢谢您的帮助!
系统设置
更新
在进一步testing的基础上,这个问题最终成为腻子和openssh之间的兼容性问题。 我解决了这个问题,通过使用服务器(openssh)生成密钥,然后使用puttygen将密钥转换为腻子识别的格式。 从这里我可以利用选美将关键字提供给tortoiseSVN。 多谢你们!
只要你有公钥和私钥,什么机器生成密钥并不重要。 没有这两个,你就会有一个问题,因为一个解密对方的encryption。
重要的是用什么应用程序来生成密钥。 PuTTYgen可以工作,但是对于OpenSSH的兼容性,当然,你需要把“公钥粘贴到OpehSSH authorized_keys文件中”并粘贴到你的服务器的每个用户的授权密钥文件中。 一些服务器将其称为authorized_keys2 ,其他的只是authorized_keys 。 (取决于OpenSSH的版本,可能是否设置为接受SSHv1身份validation信息。)您还需要确保它具有正确的权限(通常为600,并由用户拥有),否则OpenSSH将忽略它。
如果你在两台机器上都使用OpenSSH,只要公钥在authorized_keys(或服务器的对等体)中,那么这些东西就可以工作,并且该文件具有正确的权限。
在本地机器上生成密钥是否很重要?
是。 非常非常。 您需要生成密钥作为您将运行ssh客户端的用户,在您要运行的计算机上。 关键在于这个身份。
对于authorized_keys文件,您需要确保将其添加到由sshd_config文件指定的目录中。 默认是〜/ .ssh /,所以请在远程计算机的家中查看.ssh目录。 如果没有authorized_keys文件,只需创build一个包含您在客户端生成的密钥。 否则,追加它。
如果它仍然不起作用,您要么不尝试使用密钥进行身份validation(更可能),要么服务器不接受密钥login(较less可能)。
在PuTTY中,您是否已经在Connection> SSH> Auth下设置了私钥设置?
自动键控最常见的问题之一是权限。 我通常的命令行是这样的(连接到机器后,我需要添加键):
mkdir .ssh cat >> .ssh/authorized_keys2 # hit paste to enter public key text, then enter, Ctrl-D, enter again chmod -R go-rwx .ssh
最后的命令使所有的区别。 它会在文件和目录上设置正确的* nix权限,以便SSH能够接受并正确使用它们。
没有适当的文件权限,OpenSSH(典型的服务器端软件)将简单地忽略你的密钥文件。
如果您使用Tectia在Windows机器上创build密钥,则可能需要先转换格式。 一个OpenSSH键在一个长string中看起来像“ssh-dss ABCD …. ZYXW”。 如果你的公钥是“—-公钥—-”types头的多行,则先转换。 假设您已经将公钥上传为tectiakey.txt:
ssh-keygen -i -f tectiakey.txt >> ~/.ssh/authorized_keys2