html tool

2012年11月2日星期五

openssh 搭建和无密码登陆


[起因]
 quickbuild 的打包中对.6的部署无法完成,手动在.8上执行部署部分的脚步,发现是ssh 的认证过不去了,很奇怪,打算在105.223的ubuntu os上调试一下脚步,才发现这里的sshserver 没有安装,于是才有了下文。

[doing]
------------------------------------------------------------------------------------------------
------step one :  安装 ssh server
go 了一下 参考:http://hi.baidu.com/wppxfznpchbaszd/item/11ee4a1708855ea5ffded5ee

sudo apt-get install openssh-server

本来一切one by one 的就ok 了,想修改一下 ssh的端口用8816 不用默认的22 。好吧!纠结开始自己一直在修改 etc/ssh/ssh_config 的port 多次尝试 之后还郁闷自己的系统是不是有大与别人不同时,放弃修改后,发现原文提示修改为 etc/ssh/sshd_config,虽是小插曲,但还是顿感10年前妈妈的批评又想起来了:让你粗心大意!:).

--------------------------------------------------------------------------------------------------
-------step  two : 使用密码登陆提示 

更甚者,还有,修改中一直无法修改端口,放弃后直接登陆发现无法使用密码一直提示密码错误,郁闷之下去查官网上的说明,
参考:https://help.ubuntu.com/community/SSH/OpenSSH/Configuring
发现如下提示:
sshd_config is the configuration file for the OpenSSH server.ssh_config is the configuration file for the OpenSSH client. Make sure not to get them mixed up.
嘻嘻,惬意一下,不是只有自己犯错如是,原来大家都有啊:)

看了,说明半天没有找到登陆提示access denied 的原因,死马当作活马医的心态下,加了:

To allow only the users Fred and Wilma to connect to your computer, add the following line to the bottom of the sshd_config file:
AllowUsers Fred Wilma 

中说的指定用户,我的是很windows的Administrator,哈哈我就加了
AllowUsers Administrator

测试之下还是不行。

今天总结时,发现openssh的官方参数说明:
http://www.openbsd.org/cgi-bin/man.cgi?query=sshd_config&sektion=5

留一个以后参考吧!

最后找到ssh的日志位置:
 /var/log/auth.log
每次登陆认证时查看验证,还是提示为 密码问题,晕死了!

没有最后,继续找,中间种种测试忽略,然后发现这个:
http://hi.baidu.com/zhaoke0128/item/551d5a49e2caeeed1f19bcd4

将当前配置文件中大部分的参数全部感觉介绍,改了一下,其实个人认为调整最有用的应该是:
ChallengeResponseAuthentication yes         # 允许任何的密码认证!所以,任何 login.conf 
                           # 规定的认证方式,均可适用!
sudo /etc/init.d/ssh restart 之后还是不可以!!!

看着同样的认证日志,我突然想到龙哥说的名言:“如果代码实在调试不出来,最好的办法就是关机,回家好好睡一觉,明天说不定就ok了。”:)好吧我想撤退了,放弃今天修改时,忽然想到至少今天把别的参数看了一次,并且还有官方帮助的AllowUsers Administrator

对了,我发现自己的认证用户名一直是administrator ,好吧!我去掉了这个配置,重新启动,测试,通过,认证完成登陆成功!

好了,认证到这里就ok了,自己当时写Administrator 是因为ubuntu 图形界面的右上角的提示用户名是这样的。
go 了一下 linux的用户名可是区分大小写的,但是windows 的用户名不区分大小写。
嘻嘻,这个问题,是自己在coding调试就存在的问题,查找问题时,自己的调试代码也有这个管理不善的问题,老认为万一有累加作用生效自己就赚大了,好吧,这个不是这次主题,回头好好分析改进。

--------------------------------------------------------------------------------------------------
-------step  three : 无密码ssh登陆
参考:http://shutiao2008.iteye.com/blog/315102
这个生产使用的是dsa ,但之后见的也有很多其他算法的
 在本地机器中的~/.ssh/目录下执行下命令,

ssh-keygen -t dsa

将生成两个文件,id_dsa和id_dsa.pub.

2) 将id_dsa.pub拷贝到远程机器,并且将id_dsa.pub的内容添加到~/.ssh/authorized_keys中.

cat id_dsa.pub >>authorized_keys

注意:目录.ssh和文件authorized_keys的权限必须是600.

这个之后 自己就晕了这个到底是从哪个主机到哪个主机ssh 不用密码啊?
好吧!预月逻辑混乱了:)

参考:http://www.l-penguin.idv.tw/article/ssh-keygen.htm

这个分析下,是ssh-keygen -t dsa 运行的主机登陆authorized_keys 的系统不需要密码了:)

顺便发现一下:使用username@hostname 方式指定登陆用户名:)

好了,到这里基本就完成了,自己还测试了一下,
在本机的那个账户下产生,并到对方的哪个用户注册,这个ssh无密码才可以使用,其他账户登陆是会影响的:)

--------------------------------------------------------------------------------总结一下------------------------------
[next]
1.[thinking] 分析Administrator 和 administrator 引发的调试时,测试使用代码的策略问题
2.[thinking] ssh_config 和sshd_config的文件问题,如何系统的处理这样的问题



1 条评论:

  1. 测试了一下,这种方法下修改被连接主机的密码后,其他主机key连接是不受影响的。【test:testlike 连接修改密码后的.6 是ok的】

    回复删除