天天看点

实现无密码SSH登录

为了更好理解,使用Hadoop,首先需要学会配置ssh,看了几篇牛人的教程,学舌将就下来了,但还是感觉有些地方要总结一下,还是值得写点东西的。首先总结一下ubuntu linux上的配置,然后是windows cygwin 上的。

Ubuntu Linux

在ubuntu 上安装 ssh只要输入 apt-cache search ssh,然后找到需要安装的包,或者直接输入 apt-get install ssh。

下面需要用 ssh 包含的工具 ssh-keygen 生成一个公私钥对: ssh-keygen –t dsa 或者 ssh-keygen –t rsa ,前者生成的是RSA公私钥,后者是DSA公私钥。如果不指定生成位置,那么默认安装的位置是当前用户根目录下的 .ssh 目录前面,同时可以指定查询私钥的密码,也就是 passphrase,这里为了实现无密码无输入登录显然把passphrase置空也就是直接回车就可以了。

这里看看 .ssh目录,这里有两个文件比较关键,一个是 authorized_keys ,这里是ssh服务器接受登录时默认使用的公钥集合,也就是登录该服务器的客户端提供的私钥必须和这个公钥集合的某个公钥匹配。所以如果你想让某个客户登录,那么就把它的公钥添加到这个文件的末尾,那么那个客户端就可以用对应的私钥访问这个服务器了。另一个关键的文件是 known_hosts,这似乎是一个历史记录,他会把访问者的一些信息记录下来,如果有些奇怪的问题出现可以尝试删除这个文件,重新登录。

最后要实现无密码登录的一个步骤是要对该ssh服务器的配置修改一下,也就是 /etc/ssh 目录下的 sshd_config 文件下的 PasswordAuthentication 设置 为 no, 默认情况下是注释掉这个选项,使用时默认为 yes

好了,服务器端的配置就完成了,如果下面你输入  ssh localhost,可以实现无密码登录的话,那么就达到目的了

对于客户端来说,还要进行一下配置,如果是从另外一台 ubuntu linux 上登录,还需要注意以下几点:

1. ssh 登录时,如果你的命令是 ssh 远程节点hostname或者远程节点IP地址,那么你试图登录所使用的私钥就是当前用户目录下的 id_dsa,或 id_rsa,如果出现问题,可以参考一下 ssh-agent的用法,http://tech.ddvip.com/2009-01/1232300204106230.html

2. 一定要把你所使用的上述私钥对应的公钥追加到你要登录的主机帐户主目录下 .ssh 目录的 authorized_key文件里,否则会认证失败

一般都是用命令  cat key_pub >> authorized_keys ,key_pub 就是你的公钥

当然也可以在windows下使用客户端登录,我推荐 putty ,支持中文显示的,无须安装,界面简洁,挺好用的。这里要注意以下几点,首先putty登录时使用的私钥的格式与 linux系统下生成的私钥的格式不兼容,需要转换一下,不需要下载工具,putty包里就带了一个转换工具。转换的时候首先要把约定的私钥格式先指定一下,否则就会提示输入passphrase,这样你原来如果没有指定passphrase就没法转换了,都是小细节,多尝试几次就可以了。

Windows

在windows主要是安装 cygwin 版本的 ssh 服务,看得教程里说需要额外的 sed,svn程序,其实还缺少很多包,我第一次安装是奉行最小安装,结果很多ssh依赖的包没有装好,导致sshd服务启动总是失败,后来直接输入 /usr/sbin/sshd ,执行后看到错误提示,原来缺少很多包,于是一个一个添上,记得把cygwin 里负责安装,启动 windows本地服务的安装好,还有几个库,tcpwrapper,等,按照错误提示一个一个添上,然后启动服务就可以了。这样其他的操作就和 linux 下面差不多了。

我这里讲的比较粗,一是很多细节记不住,也没有必要赘述,还有就是手懒,不想写太细了。权作为以后遇到问题时以供检索吧。

继续阅读