Ubuntu服务器运维必备技能

今天有点时间,写一点服务器运维方面的东西。算是必备技能吧。

分区配置参考

如果你要重新格式化服务器并重新安装系统,那么你可以考虑以下目录结构及大小分配:

  • /boot 目录:该目录用于存放系统引导文件和内核映像等。该目录的大小通常不需要超过 1GB,建议将其分配在 SSD 硬盘中。
  • / 根目录:该目录是 Linux 文件系统的根目录,包含系统的大部分文件和目录。该目录应该分配在 SSD 硬盘上,大小建议在 30GB 左右。
  • /home 目录:该目录用于存放用户的个人数据和配置文件等。该目录的大小取决于系统中有多少用户和用户的使用需求,建议将其分较大的的磁盘空间中,现在服务器动不动就几十个T, 这个目录分配个几个T也不会过。
  • /var 目录:该目录用于存放系统运行时的数据,如日志文件、数据库文件、邮件等。该目录的大小也取决于系统的使用需求,建议将其分配在较大的磁盘空间中尽可能大一点。
  • /srv 目录:该目录用于存放服务数据,如站点和应用程序的数据和配置文件等。建议将其分配在较大的磁盘空间中,500G就相当的好。
  • /tmp 目录:该目录用于存放临时文件,建议将其分配在 SSD 硬盘中,大小根据系统的使用需求决定,一般不需要太大。
    另外,你可以考虑将 SSD 硬盘分为两个分区,一个用于存放 /boot 和 / 根目录,另一个用于存放 /tmp 目录。对于 8TB 的磁盘空间,你可以将其全部分配给 /home、/var 和 /srv 目录,或者按照实际需求进行合理分配。

需要注意的是,在实际分配空间时,应该考虑到系统和应用程序的更新和扩展,以及备份和恢复操作所需的空间等因素,以避免空间不足的情况发生。
/boot 和 / 根目录通常需要比较小的空间,而 /home、/var 和 /srv 目录则需要较大的空间来存储用户数据、系统数据和服务数据等。将 /tmp 目录放在 SSD 上可以获得更好的性能,同时将其分离出来也可以防止系统出现空间不足的情况。

需要注意的是,在实际分配空间时,还要根据具体的使用情况和需求来调整。例如,如果你需要使用大型数据库或者应用程序,那么 /var 目录可能需要更大的空间来存储数据库文件和其他应用程序数据。同时,你还需要预留一些空间用于备份和系统更新等操作。
总之,你可以根据自己的实际情况来适当调整各个目录的大小,以满足系统的使用需求。

nano的配置小记
## 临时显示行号
nano --linenumbers myfile.txt

## 修改配置文件显示行号
# 配置文件如下:
sudo nano /etc/nanorc
# 将 set linenumbers前的注释去掉

## 向后搜索文本:
CTRL + W

## 搜索替换
ALT + R | mac: Ctrl + \
开机、重启命令
1、poweroff : 立刻关机

2、shutdown -h now : 立刻关机

3、shutdown -h 10 : 10分钟后自动关机

通过 shutdown 命令设置关机,可通过 shutdown -c 命令取消

重启:

1、reboot : 立刻重启
2、shutdown -r 10 : 10分钟后自动重启
3、shutdown -r 17:05 :17:05 重启
设置 root 用户密码
sudo passwd  或者 sudo passwd root
Password: <你当前用户的密码> 
Enter new UNIX password:  <设置是 root 用户的密码> 
Retype new UNIX password:<重复以上 root 用户的密码> 

## 删除已经存在的用户,连同它的home文件一同删除
sudo deluser --remove-home git 
当前用户目录没有.ssh文件的解决办法
ssh localhost

上面命令在当前用户目录下执行一次,问题就解决了。

原因:
.ssh 是记录密码信息的文件夹,如果没有登录过root的话,就没有 .ssh 文件夹,因此登录 localhost ,并输入密码就会生成了。

查看进程
sudo ps -e | grep ssh
密钥的生成
ssh-keygen -t rsa -f test -C "test-key"
//说明:-f:指定文件名,不指定默认为:id_rsa
//-C: 公钥中的备注,就是最后==后的信息
远程文件传输

假设远程服务器IP地址为 192.168.1.11

  • 从服务器复制文件到本地:
scp [email protected]:/data/test.txt /home/myfile/

## 补充:
## 1. 多文件拷贝
  scp [email protected]:/data/\{test1.txt,test2.cpp,test3.bin,test.*\} /home/myfile/

## 2. scp默认连接的远端主机22端口,如果ssh不是使用标准的22端口(以233为例)则使用-P(P大写)指定:
  scp -P 233 [email protected]:/data/test.txt /home/myfile/

[email protected]: root是目标服务器(有你需要拷贝文件的服务器)的用户名,192.168.1.11 IP地址,后面紧跟的 “:” 不要忘记,/data/test.txt(多文件还有test1.txt,test2.cpp,test3.bin,test.a,test.c等) 是目标服务器中你要拷贝文件的地址,接一个空格,后面的 /home/myfile/ 是本地接收文件的地址。

  • 从服务器复制文件夹到本地:
scp -r [email protected]:/data/ /home/myfile/
  • 从本地复制文件到服务器:
scp /home/myfile/test.txt [email protected]:/data/

## 补充:多文件拷贝
scp /home/myfile/test1.txt test2.cpp test3.bin test.* [email protected]:/data/
  • 从本地复制文件夹到服务器:
scp -r /home/myfile/ [email protected]:/data/
ssh远程无密码密钥登录
ssh-keygen -t rsa //创建公钥与私钥

## 查看用户根目录的.ssh目录下authorized_keys文件,如果没有,就创建一个:

touch authorized_keys
$ chmod 600 .ssh/authorized_keys

authorized_keys的权限一定要是600

authorized_keys:这个文件用来存放远程免密登录的公钥,主要通过这个文件记录多台机器的公钥。

远程免密登录的步骤如下:
有机器A(192.168.1.155),B(192.168.1.181)。现想A通过ssh免密码登录到B。

  • 把A机下的id_rsa.pub复制到B机下,在B机的.ssh/authorized_keys文件里,我用scp复制。
$ scp -P 50888 .ssh/id_rsa.pub [email protected]:/home/mayi/id_rsa.pub 

由于还没有免密码登录的,所以要输入密码。

  • B机把从A机复制的id_rsa.pub添加到.ssh/authorzied_keys文件里。
$ cat id_rsa_mac.pub >> .ssh/authorized_keys

小结:登录的机子可有私钥,被登录的机子要有登录机子的公钥。这个公钥/私钥对一般在私钥宿主机产生。上面是用rsa算法的公钥/私钥对,当然也可以用dsa(对应的文件是id_dsa,id_dsa.pub)
想让A,B机无密码互登录,那B机以上面同样的方式配置即可。

网卡设置

编辑文件:

sudo vim /etc/netplan/01-network-manager-all.yaml

输入以下代码:

network:
    version: 2
    renderer: NetworkManager
    ethernets:
      ens33:
        dhcp4: no
        addresses:
          - 192.168.190.130/24
        optional: true
        gateway4: 192.168.190.2
        nameservers:
          addresses:
            - 8.8.8.8
            - 114.114.114.114

上面的参数说明如下:

  • ens33:网卡名称,一般网卡名称是ens33,若不同可能为ens32,具体通过ifconfig命令查看
  • dhcp4:no,该字段设置为no,表示设置为静态IP
  • address:静态IP地址,需要根据个人修改
  • gateway4:网关
  • nameservers:DNS设置
开启ssh远程登录的方法
  • 打开终端,输入以下命令安装OpenSSH服务及客户端
sudo apt-get install openssh-server openssh-client -y //主要安装服务就可以了,即openssh-server
  • 修改“ /etc/ssh/sshd_config”
$ sudo vim /etc/ssh/sshd_config

## 修改下面的参数:
PermitRootLogin yes (默认为#PermitRootLogin prohibit-password)
  • 更改服务器的SSH的22端口
  1. 修改配置文件
sudo vim /etc/ssh/sshd_config
找到#Port 22一段,这里是标识默认使用22端口
#Port 22
#ListenAddress 0.0.0.0
#ListenAddress : :
  1. 修改端口
修改为其他端口,比如
#Port 22
Port 50000
#ListenAddress 0.0.0.0
#ListenAddress : :
  1. 重启服务
sudo /etc/init.d/sshd 
或
sudo service ssh restart
  1. 查看状态
sudo systemctl status ssh

## 开启防火墙
sudo ufw allow ssh

##如果防火墙没有安装,请先安装
sudo apt install ufw

## 检查状态
sudo ufw status verbose

##查看所有端口的开放情况
netstat -aptn

##ufw的相关命令
$ ufw status
$ ufw enable
$ ufw allow 22
$ ufw reload

##全局修改ubuntu的更新源
sudo vim /etc/apt/sources.list
将所有的:
deb http://cn.archive.ubuntu.com/ubuntu/ 这里面的网址改为
## 修改成国内阿里云库:
http://mirrors.aliyun.com/ubuntu/

  1. ufw相关操作
  • ufw enable/disable:打开/关闭防火墙
  • ufw reload:重启防火墙
  • ufw status:查看已经定义的ufw规则
  • ufw default allow/deny:外来访问默认允许/拒绝
  • ufw allow/deny 20:允许/拒绝访问20端口,20后可跟/tcp或/udp,表示tcp或udp封包。
  • sudo ufw allow proto tcp from 192.168.0.0/24 to any port 22:允许自192.168.0.0/24的tcp封包访问本机的22端口。
  • ufw delete allow/deny 20:删除以前定义的"允许/拒绝访问20端口"的规则

示例:

sudo ufw allow 9200 允许外部访问9200端口(tcp/udp)
sudo ufw allow 3690 允许外部访问3690端口(svn)
##允许此IP访问所有的本机端口
sudo ufw allow from 192.168.25.125 
## 允许指定的IP段访问特定端口
sudo ufw allow proto tcp from 192.168.0.0/24 to any port 22 
## 删除上面建立的某条规则,比如删除svn端口就是 sudo ufw delete allow 3690 
sudo ufw delete allow smtp 

完成以上的步骤就可以在客户端远程登录了,例如在Windows系统下可以用XShell之类软件,在Linux中则可以使用openssh-client,可以用命令来安装:

sudo apt-get install openssh-client。
  1. ssh连接到服务器
ssh -p <端口号> <用户名>@<服务器地址>

注意:问题现象
当服务器重做系统后,用以前的客户端连接服务器时,有时会出现以下问题:

[root@vfc-ding02 ~]# scp -p22 ./data.zip [email protected]:/data/

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!

Someone could be eavesdropping on you right now (man-in-the-middle attack)!

It is also possible that a host key has just been changed.

The fingerprint for the ECDSA key sent by the remote host is

SHA256:uIDTPsLjcWOl6LYwJhm34mXllNQxm3qg3fVquwjSpE4.

Please contact your system administrator.

Add correct host key in /root/.ssh/known_hosts to get rid of this message.

Offending ECDSA key in /root/.ssh/known_hosts:1

ECDSA host key for 10.0.7.123 has changed and you have requested strict checking.

Host key verification failed.

lost connection

这是因为本地的~/.ssh/known_hosts文件里有以前的连接信息,只要把这里面的信息给清除了就好了。

Mac系统中登录方式

Wifi方式登录(即配置SSH极简化登录方式)
正常的连接命令包括端口号、用户名和 IP 地址,我们感觉比较麻烦,这时我们可以配置 SSH,我们使用一个别名就能进行连接。
找到 SSH 配置文件,~/.ssh/config 文件,如果没有则创建
配置格式,需要在配置文件中写入如下格式:

  • Host -------------- 自定义设备名
  • Hostname -------- 通过USB端口映射,本地IP或localhost
  • User ------------- 登录用户
  • Port ------------- 指定端口号为映射端口号
# 登录远程ubuntu服务器
# 该文件用于配置私钥对应的服务器信息
# github / gitlab 等配置

#AddKeysToAgent yes
#UseKeychain yes

# 登录远程ubuntu服务器
Host myserver
User myserver
HostName <你的服务器IP地址>
IdentityFile ~/.ssh/id_rsa_mac
Port 50111
Compression yes
ServerAliveInterval 60
ServerAliveCountMax 20
LogLevel INFO

这样登录时只要输入 ssh myserver 就可以了

解决ssh登录后闲置时间过长而断开连接
我们通过终端连接服务器时,当鼠标和键盘长时间不操作,服务器就会自动断开连接,我们还的需要重新连接,感觉很麻烦,总结一下解决此问题的方法

  • 方法一
    修改/etc/ssh/sshd_config配置文件,找到ClientAliveCountMax(单位为分钟)修改你想要的值。然后执行:
service sshd reload
  • 方法二
    找到所在用户的.ssh目录,如root用户该目录在:/root/.ssh/,在该目录创建config文件
vim /root/.ssh/config

## 加入下面一句:
ServerAliveInterval 60

保存退出,重新开启root用户的shell,则再ssh远程服务器的时候,不会因为长时间操作断开。应该是加入这句之后,ssh客户端会每隔一段时间自动与ssh服务器通信一次,所以长时间操作不会断开。

win平台中的登录方法

打开(没有就新建一个config文件)在用户目录的.ssh目录下的config文件,这个文件没有扩展名:

Host myserver
HostName <你的服务器IP地址>
User myserver
Port 50111
PubkeyAuthentication yes
IdentityFile ~/.ssh/dell_rsa

对应的目录下要有ssh-keygen -t rsa -f test -C "test-key"生成的密钥对。对示例中的公钥为:dell_rsa.pub, 并将这个公钥上传到服务器,方面见Mac系统的操作方法。

你可能感兴趣的:(服务器,运维,ubuntu,网络)