您的位置:首页 > 其它

无需输密码实现两台ubuntu服务器之间的数据传输

2009-10-23 22:51 344 查看
一个下午加半个晚上,终于可以远程在agent端部署并启动一个虚拟机了,本来并不复>杂的问题,还是由于几个小细节拖了这么长的时间,现在把这几个对牛人来说不值一提对新手却有可能构成瓶颈的细节问题记一下,也算给以后遇到这些问题的CSer们提供一些参考。
一.怎样使输入“sudo"的时候不要求输密码?
远程部署一定离不开远程的操作,比如远程传输指令scp,还有本地执行一些命令或脚>本的时候,也需要使用"sudo"提高到root权限,正常情况下,使用"sudo"指令的时候是一定要求输入密码的,而我做的远程部署工作将来会应用在大批量的场合,因此希望实现所有流程不用任何输入密码的操作,全部自动化完成。然后我就到网上查了一下,很容易地找到了解决方法。关于“sudo"的一些配置信息保存在/etc/sudoers文件里,这个文件的权限是440>,是连root都不能进行编辑的一个文本文件,解决问题的关键就在这个文件了。解决步骤是这样的:首先启动电脑进入安全模式(必须),在安全模式下,运行“chmod 740 /etc/sudoers"命令将sudoers文件的权限进行修改,修改以后就可以编辑了,我们输入"vim /etc/sudoers",然后在文件最后一行会发现有这么一句:“%admin ALL=(ALL) ALL”,将这一句修改为>:"%admin ALL=(ALL) NOPASSWD: NOPASSWD: ALL",然后保存,最后再运行"chmod 440 /etc/sudoers"命令将sudoers的权限恢复,做完这些工作,我们再重启进入正常模式,就会发现大功已经告成了~
二.怎样使两台电脑(均装ubuntu系统)通过scp命令进行文件传输,且不用输密码?
linux系统的scp命令太酷了,巨简单的一个命令就能实现两台电脑之间的文件传输,不过同样存在一个问题,就是传输的时候,系统会要求输入对方电脑的密码,按照一向的原则,不能自动的就不能忍受,现在我们来实现scp传输的时候不输密码。由于scp传输实际上是一种ssh传输,因此这个方法同样适用于ssh方式的文件传输。方法是这样的:
1、首先我们在两台电脑上都安装openssh-server,使用"sudo apt-get install openssh-server"即可。
2、现在假设两台电脑分别是A和B,现在我们想实现A向B传输文件的时候不需要输密码>,为了保证可以传输文件到对方电脑的任意目录(即不仅仅是/home/user/底下),我们需>要启用root帐户,启用的方式是这样的:输入sudo passwd,如果没有设置sudo不需输密码的话,要先输入当前帐户的密码,输入以后系统会提示输入一个新的UNIX password,这就是root帐户的密码了,输入两遍你想要设的密码以后,系统会提示成功更新密码,这时root帐户就启用了,这种情况下还不允许root帐户在登录界面处登录,事实上是不推荐设置root帐户登录的,而要实现我们的目的也没必要设置root帐户登录,而只要启用了root帐户就行了。进入root账户只需要输入”su”命令就行了。
3、在A的电脑上输入”su”命令进入root账户,敲入命令”ssh-keygen”,一路回车,生成ssh的私钥id_rsa和和公钥id_rsa.pub,接下来我们需要将公钥的内容复制到B机器的/root/.ssh/authorized_keys文件里,我们可以用刚学的scp命令,输入”scp /root/.ssh/id_rsa.pub root@(B的ip):/root/.ssh/authorized_keys,顺利完成这一步后,从A机器往B机器传输数据就不需要再输入密码了;如果想让B机器往A机器传输数据也不再输入密码,也依照以上的方法将B电脑生成的key复制到A电脑的authorized_keys文件里即可。
晕,本来感觉有一堆要写的,没想到就写了这么点,不少细节其实都包括在上面的文字中了,这段时间狂跟ubuntu打交道,还搞了好几天ubuntu纯字符界面的server,虽然有时候烦到崩溃,但每当一个又一个问题得到解决,自己想要的结果终于出来的时候,还是感觉真的很值,哎,可怜的CSers,受累的命啊。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: