今天有点时间,写一点服务器运维方面的东西。算是必备技能吧。
如果你要重新格式化服务器并重新安装系统,那么你可以考虑以下目录结构及大小分配:
/boot 目录
:该目录用于存放系统引导文件和内核映像等。该目录的大小通常不需要超过 1GB,建议将其分配在 SSD 硬盘中。/ 根目录
:该目录是 Linux 文件系统的根目录,包含系统的大部分文件和目录。该目录应该分配在 SSD 硬盘上,大小建议在 30GB 左右。/home 目录
:该目录用于存放用户的个人数据和配置文件等。该目录的大小取决于系统中有多少用户和用户的使用需求,建议将其分较大的的磁盘空间中,现在服务器动不动就几十个T, 这个目录分配个几个T也不会过。/var 目录
:该目录用于存放系统运行时的数据,如日志文件、数据库文件、邮件等。该目录的大小也取决于系统的使用需求,建议将其分配在较大的磁盘空间中尽可能大一点。/srv 目录
:该目录用于存放服务数据,如站点和应用程序的数据和配置文件等。建议将其分配在较大的磁盘空间中,500G就相当的好。/tmp 目录
:该目录用于存放临时文件,建议将其分配在 SSD 硬盘中,大小根据系统的使用需求决定,一般不需要太大。需要注意的是,在实际分配空间时,应该考虑到系统和应用程序的更新和扩展,以及备份和恢复操作所需的空间等因素,以避免空间不足的情况发生。
/boot 和 / 根目录通常需要比较小的空间,而 /home、/var 和 /srv 目录则需要较大的空间来存储用户数据、系统数据和服务数据等。将 /tmp 目录放在 SSD 上可以获得更好的性能,同时将其分离出来也可以防止系统出现空间不足的情况。
需要注意的是,在实际分配空间时,还要根据具体的使用情况和需求来调整。例如,如果你需要使用大型数据库或者应用程序,那么 /var 目录可能需要更大的空间来存储数据库文件和其他应用程序数据。同时,你还需要预留一些空间用于备份和系统更新等操作。
总之,你可以根据自己的实际情况来适当调整各个目录的大小,以满足系统的使用需求。
## 临时显示行号
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 重启
sudo passwd 或者 sudo passwd root
Password: <你当前用户的密码>
Enter new UNIX password: <设置是 root 用户的密码>
Retype new UNIX password:<重复以上 root 用户的密码>
## 删除已经存在的用户,连同它的home文件一同删除
sudo deluser --remove-home git
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-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。
$ scp -P 50888 .ssh/id_rsa.pub [email protected]:/home/mayi/id_rsa.pub
由于还没有免密码登录的,所以要输入密码。
$ 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
上面的参数说明如下:
sudo apt-get install openssh-server openssh-client -y //主要安装服务就可以了,即openssh-server
$ sudo vim /etc/ssh/sshd_config
## 修改下面的参数:
PermitRootLogin yes (默认为#PermitRootLogin prohibit-password)
sudo vim /etc/ssh/sshd_config
找到#Port 22一段,这里是标识默认使用22端口
#Port 22
#ListenAddress 0.0.0.0
#ListenAddress : :
修改为其他端口,比如
#Port 22
Port 50000
#ListenAddress 0.0.0.0
#ListenAddress : :
sudo /etc/init.d/sshd
或
sudo service ssh restart
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/
示例:
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。
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文件里有以前的连接信息,只要把这里面的信息给清除了就好了。
Wifi方式登录(即配置SSH极简化登录方式)
正常的连接命令包括端口号、用户名和 IP 地址,我们感觉比较麻烦,这时我们可以配置 SSH,我们使用一个别名就能进行连接。
找到 SSH 配置文件,~/.ssh/config 文件,如果没有则创建
配置格式,需要在配置文件中写入如下格式:
# 登录远程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登录后闲置时间过长而断开连接
我们通过终端连接服务器时,当鼠标和键盘长时间不操作,服务器就会自动断开连接,我们还的需要重新连接,感觉很麻烦,总结一下解决此问题的方法
service sshd reload
vim /root/.ssh/config
## 加入下面一句:
ServerAliveInterval 60
保存退出,重新开启root用户的shell,则再ssh远程服务器的时候,不会因为长时间操作断开。应该是加入这句之后,ssh客户端会每隔一段时间自动与ssh服务器通信一次,所以长时间操作不会断开。
打开(没有就新建一个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系统的操作方法。