Ubuntu相关

Ubuntu内核更换

1.查看当前安装的内核

dpkg -l | grep linux-image

2.查看可以更新的内核版本

sudo apt-get search linux-image

3.安装新内核

sudo apt-get install linux-image-3.16.0-30-generic linux-image-extra-3.16.0-30-generic

4.更新grub引导

sudo update-grub

5.设置grub配置,就可以在开机时选择内核了,当然也可以直接选择启动的内核。

/etc/default/grub
GRUB_HIDDEN_TIMEOUT=10
GRUB_HIDDEN_TIMEOUT_QUIET=false

6.重启后选择内核,进入系统后安装内核头文件

sudo apt-get install linux-headers-$(uname -r) build-essential

Ubuntu网络配置

对平时命令行配置网络进行一下总结

使用ifconfig

直接使用命令进行网卡ip、掩码的配置

sudo ifconfig eth0 192.168.1.2 netmask 255.255.255.0
#将eth0的ip配置为192.168.1.2

使用网卡配置文件

编辑/etc/network/interfaces文件进行配置

#在文件中添加
auto eth0
iface eth0 inet static
address 192.168.33.2
netmask 255.255.255.0
network 192.168.33.0
boardcast 192.168.33.255
gateway 192.168.33.1
up route add default gw 192.168.33.1 # 可在网卡启动时添加路由表项
dns-nameservers 192.168.33.3

对于ubuntu Server版可直接sudo /etc/init.d/networking restart更新网卡配置。而对于ubuntu Desktop版则会发现直接重启网络服务并不会改变网卡的配置,原因是跟NetworkManager的配置产生了冲突。

# /etc/NetworkManager/NetworkManager.conf如下
[main]
plugins=ifupdown,keyfile,ofono
dns=dnsmasq

no-auto-default=xx:xx:xx:xx:xx:xx,

[ifupdown]
managed=true

只需要在no-auto-default=后面去掉对应eth0的网卡mac,然后sudo service network-manager restart就可以更新到配置(有时候需要多试几次,所以在重启完最好查看下网卡ip等,看是否已经更新)。另外不建议修改成managed=false,毕竟对于桌面版,NetworkManager的确还是挺方便的。

后续路由配置

配置好网络地址之后,最后检查下路由表,确保能通

route -n        #显示不解析的路由表
sudo route del/add default gw a.b.c.d dev eth0    #设置从eth0出且网关为a.b.c.d的默认路由
sudo route del/add -net a.b.c.d/24 dev eth0        #对a.b.c.d/24网络,从eth0口出
sudo route del/add -host a.b.c.d dev eth0        #对a.b.c.d的主机,从eth0出

vim的使用

当远程连接服务器进行代码或文本的修改时,vim就成了我的首选。以下介绍下我个人使用vim的心得。

vim安装

首先是安装vim

sudo apt-get update            #一般不需要这步            
sudo apt-get install vim

vim配置

vim的强大之处在于可以通过vimscript自由地配置vim,有些大神甚至将vim配置成了IDE。
vim配置文件有两个,均需自己主动创建。

  • ~/.vimrc:针对当前用户
  • /etc/vimrc:针对所有用户

我个人的vim配置如下:

syntax on
syntax enable
set background=dark
set nocompatible
set nu
set cursorline
filetype on
set autoindent
set smartindent
filetype indent on
set softtabstop=4
set shiftwidth=4
set smarttab
set mouse=a
set showmatch
set encoding=utf-8

基本上这样的设置已经够用了

vim使用

关于vim的四种模式就不一一介绍了,下面介绍一下vim的一些常用命令:

  • 正常模式下:
    • ctrl+f下翻一屏,ctrl+b上翻一屏
    • ctrl+d下翻半屏,ctrl+u上翻半屏
    • zz将当前行移动到屏幕中央,zt移动到屏幕顶端,zb移动到屏幕底部
    • o在下方插入一行,O在上方插入一行。
    • /xxx在后面的文本中查找xxx,?xxx在前面的文本中查找xxx
    • n向后查找下一个,N向前查找下一个
    • 缩进 >>右缩进一个shiftwidth,<<向左缩进一个shiftwidth。
  • 命令模式下
    • :n移动到第n行,:$移到到最后一行
    • :s/old/new用new替换当前行第一个old
    • :s/old/new/g用new替换当前行所有old
    • :n1,n2s/old/new/g用new替换n1行到n2行的所有old
    • :%s/old/new/g用new替换文件中所有的old
    • :%s/^/add/g在每一行首部添加add
    • :%s/$/add/g在每一行尾部添加add
    • :%s/old/new/g(c|i)加c代表需要确认,加i代表忽略大小写
    • :%g/pattern/command比如给:%g/^xyz/normal dd
  • 可视模式:
    • y复制,p在光标之后粘贴,P在光标之前粘贴。

SSH的使用

Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在网络中建立安全隧道来实现SSH客户端与服务器之间的连接。
反正好用就完事了。下面介绍一下SSH的使用,以下命令均在ubuntu下测试通过。

SSH的安装

虽然可以只安装SSH客户端,但还是建议同时安装SSH服务端。安装命令如下:

sudo apt-get install openssh-server        #安装服务端
sudo apt-get install openssh-client        #安装客户端

SSH服务端启动

如果希望别人能通过SSH连接到你的服务器,那么首先要开启sshd服务。
先检查一下是否已经开启sshd服务:

如果没开则开启sshd服务:

sudo /etc/init.d/ssh restart

SSH正向连接

正向连接的应用场景是B开启sshd服务,A使用ssh连接B。
连接命令如下:

ssh -p xxx username@ip
# p指定的是ssh连接的端口,默认是22
# username是ssh服务器的用户名
# ip是ssh服务器的ip地址

ssh twd@192.168.1.2

SSH反向连接

为什么需要反向连接呢?假设A为内网机器,B为外网机器,那么A正向连接到B是可行的,但是从B正向连接到A是不行的,因为B根本无法通过A的内网ip找到A。所以就需要反向连接:
首先在A中输入以下命令

ssh -fNTR 8888:localhost:22 user_b@ip_b #是将B主机的8888端口转发到A主机的22端口

在B主机中输入

ssh -p 8888 user_a@localhost    #注意是user_a

就可以连上了。

SSH反向连接的维持

SSH是会超时关闭的。所以需要有一种方法维持隧道的连接:
安装autossh

sudo apt-get install autossh

在A中输入

autossh -p 22 -M 6777 -NR 8888:localhost:22 user_b@ip_b        #-M用于监听隧道的状态

在B中输入以下命令,即可连接

ssh -p 8888 user_a@localhost    #注意是user_a

SSH配置文件

SSH有很多配置选项,可以从以下文件配置:

客户端 /etc/ssh/ssh_config
服务端 /etc/ssh/sshd_config

这里简单提一个常用的配置,即通过心跳包维持ssh的连接,在sshd_config文件中添加:

ClientAliveInterval 30
ClientAliveCountMax 3

其意思就是每隔30秒由服务端向客户端发送一个心跳包,当未响应的心跳包达到3时,就断开连接。如果没有服务端权限,可在客户端设置:

TCPKeepAlive yes
ServerAliveInterval 30

其他配置就不多说了,记得配置修改后重启ssh服务:

sudo /etc/init.d/ssh restart

SSH筛选用户

可通过修改/etc/hosts.allow和/etc/hosts.deny两个文件进行修改

#在/etc/hosts.allow中添加
sshd:ALL            #允许所有人连接
sshd:192.168.3.2    #允许192.168.3.2连接

在/etc/hosts.deny中也是同理,修改完成后还是要重启ssh服务。

SSH可能出现的问题

有的时候会出现连不上ssh的情况,大概有以下几种情况:

  1. 服务器端的sshd服务未开启(重启ssh服务即可)
  2. ssh访问受限,即服务器上的ssh只对部分ip开放(修改配置文件)
  3. 防火墙关闭了ssh的端口

针对第三种情况,直接配置iptables比较复杂,这里推荐使用ufw(uncomplicated firewall,简单防火墙)。
ufw大部分情况下只需要以下三行命令即可:

sudo apt-get install ufw
sudo ufw enable            #启动防火墙
sudo ufw default deny    #默认全部拒绝

需要打开ssh的22端口时:

sudo ufw allow 22

VMware Ubuntu蓝屏

今天打开VMware虚拟机突然蓝屏了,但是一开始能登录,所以估计是非正常关机损坏了虚拟机的图形化界面。

sudo apt install xserver-xorg-lts-utopic
sudo dpkg-reconfigure xserver-xorg-lts-utopic 
reboot

中途可能会出现依赖不完整

sudo apt -f install