配置key认证登陆Ubuntu (上)
每一个看似轻松的结果背后都有不为人知的辛酸。又是一件小事,结果折腾了一天。
上接配置好SSH 和Samba后,开始了Python编程实践。由于实在不大会用Vim, 所以最后的编程环境实际上在Windows下用Notepad++写代码,通过Samba服务器更新直接同步到Ubuntu,当天用的还不错,把Python文件操作这部分算是小试牛刀了一下。
睡一觉起来后,悲剧开始了:SSH开始连接不上了!ssh localhost也不行。
Error 1 : connection reset by peer
Error 2: connection refused
坦言讲,这两种错误以前都遇见过,算是比较常见的错误,但google后似乎没看到特别好的解决办法,不过可以断定的是,sshd_config 配置文件有问题。
使用 grep sshd /var/log/auth.log查看下ssh服务相关的错误日志。
悲剧2: 为了查看配置文件方便,一条 chmod 777 -R /etc/ 执行了(最开始只在Python的WorkDirectory设置了777)
结果就是sudo命令再也执行不了。
Error 3:
sudo: /etc/sudoers is world writable
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin
/etc/sudoers默认只有root有读权限(440),
p@VM:~$ ll /etc/sudoers
-r--r----- 1 root root 745 2月 11 2014 /etc/sudoer
看起来是系统检测到 /etc/sudoers 的读写属性发生了变化,然后给出了提醒。所以现在是sudo的所有命令都执行不了。要说以前在12.04版本的时候貌似也这么干过,但是并没有出现过这种问题,姑且认为是到14.04版本安全性又提高了。
关键词丢进google,差点没吐血。这几乎是一个致命的错误 :要么重装系统,要么用USB portable或者开机切入到recovery/single模式,进入root shell,把 文件权限设置回去。 这两种方式都不好弄,最后终于找到了一个bypass方法:
http://askubuntu.com/questions/304212/how-to-solve-sudo-etc-sudoers-d-is-world-writable
#pkexec chmod 0440 /etc/sudoers
这条命令是可以在普通用户下执行的,执行会弹出一个图形对话框,要你输入root密码,然后切入到root.
算是切回来了,捏了一把汗。当然接下来脑子一热,没有搞清楚/etc/sudoer的正确权限,手贱执行了#chmod 600 /etc -R又是另一个悲剧:
Error 4:
sudo: /etc/sudoers is owned by uid 1000, should be 0
sudo: unable to stat /etc/sudoers.d/README: No such file or directory
这回#pkexec chmod 0440 /etc/sudoers 也执行不了,而且google下来 多数也是指向最开始提到的两种方法。
(1)USB进入
由于是Hyper-V虚拟机方式,修改开机启动顺序,从光驱加载ISO启动,进入后选择 "Try Ubuntu",使用默认Ubuntu用户倒是能直接切入root,检查发现我之前的/home 目录不存在,预感这种方法不行,直接切换到下一种方法了。
(2-1)Single模式
这个在忘记root密码时经常会用到这个办法
a) 在出现grub画面时,用上下键选中你平时启动linux的那一项,然后按e键
b).再次用上下键选中你平时启动linux的那一项(类似于kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/),然后按e键
c). 修改你现在见到的命令行,加入single,结果如下:
kernel /boot/vmlinuz-2.4.18-14 single ro root=LABEL=/
d). 回车返回,然后按b键启动,即可直接进入linux命令行
e). 输入passwd,再输入两次新密码;
f). #reboot重启
这是理想情况,以前在CentOS和 BlackTrack上也实践过,问题都不大。结果这回在Ubuntu 14.04上,进入编辑模式后,居然出现了if else模式,敢情grub也跟着变复杂了。不知道single 该加在哪里了, 想想真是恨不得马上回到12.04版本还是自己熟悉的系统好, 放弃。
(2-2)Recovery模式
这个实在是个槽点,开机启动后 一直卡在 "Booting system without full network configuration" 过不去。
以前不记得Linux系统还必须检查网络的情况(Not a Must),这回居然栽在这上面,而且Ctrl+Alt+F1 ,进入了字符界面,却一直没有出现root shell. 亦放弃。
所以最后,经过一上午的折腾,结果是:重装系统。
到这为止,又印证了上一篇文章提到的:花N多时间解决一个问题,不如直接重装系统来的快。这似乎跟开发人员所说的看懂别人的代码的过程还不如自己重新写代码。
挂机重装完系统,下午继续。
配置key认证登陆Ubuntu (上)的更多相关文章
- 配置key认证登陆Ubuntu (下)
梗概: 使用证书登陆,可以减少密码的使用,避免密码泄露,证书登陆更加方便.安全. Secure CRT 和Putty 原理相同,生成 密钥对(Key pair)操作有所不同. 1.生成key pair ...
- linux SecureCRT ssh key认证登陆
转自:http://blog.chinaunix.net/uid-20639775-id-3207171.html 通过SecureCRT创建key登录认证 一.生成公钥/密钥对 使用SecureCR ...
- Ubuntu上搭建Hadoop环境(单机模式+伪分布模式) (转载)
Hadoop在处理海量数据分析方面具有独天优势.今天花了在自己的Linux上搭建了伪分布模式,期间经历很多曲折,现在将经验总结如下. 首先,了解Hadoop的三种安装模式: 1. 单机模式. 单机模式 ...
- Ubuntu上配置SQL Server Always On Availability Group(Configure Always On Availability Group for SQL Server on Ubuntu)
下面简单介绍一下如何在Ubuntu上一步一步创建一个SQL Server AG(Always On Availability Group),以及配置过程中遇到的坑的填充方法. 目前在Linux上可以搭 ...
- Configure Always On Availability Group for SQL Server on Ubuntu——Ubuntu上配置SQL Server Always On Availability Group
下面简单介绍一下如何在Ubuntu上一步一步创建一个SQL Server AG(Always On Availability Group),以及配置过程中遇到的坑的填充方法. 目前在Linux上可以搭 ...
- ubuntu上vsftpd服务配置
Ubuntu上提供两种常用的ftp服务应用:vsftpd 和 tftpd,区别如下: 1)vsftpd 支持客户端上下传文件,支持浏览器显示及下载,支持用户名密码认证,支持匿名访问,默认端口TCP:2 ...
- 微软KinectV2深度传感器在Ubuntu上的配置和使用
最新博客地址已转到: http://blog.csdn.net/zzlyw?viewmode=contents ------------------------------------------ ...
- ubuntu上配置nginx实现反向代理
反向代理 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客 ...
- Ubuntu上latex+atom配置
网上流传的latex+atom大都是windows上的,Ubuntu与windows上的配置方式大同小异,这里写下自己的经验: 分为三个步骤,首先安装texlive,texlive是latex的依赖库 ...
随机推荐
- 26-THREE.JS 虚线绘制线框样式几何图形的材质
<!DOCTYPE html> <html> <head> <title></title> <script src="htt ...
- LeetCode OJ:Product of Array Except Self(除己之外的元素乘积)
Given an array of n integers where n > 1, nums, return an array output such that output[i] is equ ...
- 集合类Collection Map
数组与集合的区别:数组虽然也可以存储对象,但长度是固定的:集合的长度是可变的,数组中可以存储基本数据类型,集合只能存储对象. 集合特点:1.用于存储对象: 2.长度可变: 3.可存储不同对象: 一. ...
- react:高阶组件wrappedComponent
什么是高阶组件? 高阶部件是一种用于复用组件逻辑的高级技术,它并不是 React API的一部分,而是从React 演化而来的一种模式. 具体地说,高阶组件就是一个接收一个组件并返回另外一个新组件的函 ...
- 如何复制一个java对象(浅克隆与深度克隆)
在项目中,有时候有一些比较重要的对象经常被当作参数传来传去,和C语言的值传递不同,java语言的传递都是引用传递,在任何一个地方修改了这个对象的值,就会导致这个对象在内存中的值被彻底改变.但是很多时候 ...
- Android WebView remote debugging
/***************************************************************************** * Android WebView rem ...
- [QT][问题]关于QT语言家使用失败的原因之一
按照标准的qt使用教程 ( http://www.qter.org/forum.php?mod=viewthread&tid=781 ) 实践了下,发现除去主界面外,点开的窗口多语言没有问题. ...
- Shell 参数(1)
shell 中参数相关: ./a.sh a b c d $# 是传给脚本的参数个数 $0 是脚本本身的名字 $1 是传递给该shell脚本的第一个参数 $2 是传递给该shell脚本的第二个参数 $@ ...
- HDU - 6333:Harvest of Apples (组合数前缀和&莫队)
There are n n apples on a tree, numbered from 1 1 to n n . Count the number of ways to pick at most ...
- HDU - 6395:Sequence (分块+矩阵)
题面太丑了,就不复制了. 题意:F1=A: F2=B: Fn=D*Fn-1+C*Fn-2+P/i:求Fn. 思路:根据P/i的值划分区间,每个区间矩阵求. 带常数的矩阵: #include<bi ...