Linux必备知识(三)

用户账号及密码过期

用到的命令为chage,可以设置用户在什么时候被锁定,什么时候修改密码等。

我们假设我们系统已创建了chen,kelemi,xiaomi 三个用户,下面我们来看看相关设置。

sudo chage -E 2022-4-30 chen

这条命令设置 用户 chen 到 2022-4-30日后过期,之后如果想再登录的话就需要求助管理员重新获得权限。

sudo chage -l chen

检查用户的过期信息,比如密码最近修改时间,账户到期时间,密码到期、停止 时间等。

sudo chage -E 2022-5-5 kelemi

sudo chage -E 2022-5-17 xiaomi

其他两个用户我们也设置下过期时间

sudo chage -M 30 kelemi

设置用户kelemi密码30天后过期

sudo chage -l kelemi

检查该用户,可以看到过期日期,以及过期前7天会有警告

sudo chage -M -1 kelemi

设置 -1 表示取消过期,我们可以再用 sudo chage -l kelemi检查一下发现确已取消。

sudo chage -m 7 chen

sudo chage -m 7 kelemi

sudo chage -m 7 xiaomi

设置各用户最短修改密码间隔为7天,7天之内不得修改密码。防止用户密码过期后修改回原先的密码。

sudo passwd -l kelemi

锁定用户。这个不是chage命令,但放在一起也挺合适。有时我们发现某用户可能遭到入侵,要马上锁定他。就用这个命令。执行之后,这个用户将不可登录了。su – kelemi,输入密码,会发现验证失败了。

sudo passwd -u kelemi

解锁用户。


后台和前台任务

用ctrl + z 可以当前运行的任务发送到后台。

想像一下你正在编辑一个文件,有人想让你执行另外命令,你当然不想丢失编辑的工作,可以将编辑文件发送到后台。完成别人需要的命令后,再调回即可。

vim /etc/ssh/sshd_config

ctrl + z

再执行命令如:sudo apt install apache2 等。

fg

使用fg命令可以将后台的任务调回前台运行。

htop &

在命令后面加上符号 & 可以将其直接发送到后台运行

jobs

jobs可以查看后台的任务列表

vim ~/.bashrc &

jobs

我们看到已有三个后台任务在运行了

这时,我们再执行 fg 请调用哪个后台程序呢?

最近的一个!

这个示例中,就是 vim ~/.bashrc 这个任务。

如果想调用特定的可以在 fg 命令后加上 编号,这个编号在 jobs 命令运行后查看到。

fg 1

在本示例中,将调用1号后台任务即 vim /etc/ssh/sshdc_config 。


bash别名

bash别名很有用,可以自定义命令,可以将很大的命令变成很短的。

alias mycmd=”ls -lh”

mycmd

将 ls -lh 赋于别名 mycmd,然后就直接可以mycmd执行了。

alias

不带参数的alias命令,能查看 别名的列表,比如上面的命令也在列。有些linux发行版默认会带不少别名。

unalias mycmd

删除别名 mycmd

常用的alias介绍

alias df=”df -h -x squashfs -x tmpfs -x devtmpfs”

alias df    #    查看alias

上面用df别名代替一长串命令,用于排除一些临时的文件系统而显示实际的文件系统的空间情况。df已有原始的命令,别名 df将覆盖它。

df

再执行df将只显示简单的几行。

alias lsmount=”mount | column -t”

用于格式化并用制表符分开,能比较清晰查看。

alias extip=”curl icanhazip.com”

用于查看本机公网IP

alias install=”sudo apt install”

安装的别名

alias upgrade=”sudo apt update && sudo apt dist-upgrade”

更新的别名

alias speedtest="curl -s https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py | python3 -"

该别名用于测速,需要系统里已安装python3,用which python3测试

这两个别名类似,列出占用最多内存和CPU的前5个进程。

别名只对当前的shell会话有效,如果我关闭当前shell将丢失设置的别名,如何才能做到持久化有效呢?

将别名配置写在 home目录下的 .bashrc文件中。

vim ~/.bashrc

最后添加行

#    aliases

alias i=”sudo apt install”

这样打开任何一个shell,都可以用 i 命令,代替的就是 sudo apt install


公钥认证

为了安全,尽量不要用密码远程ssh到linux服务器,而是使用公钥。

which ssh

首先要确认ssh已安装,在Linux和MacOS不是问题图片,但windows没有ssh客户端,需要安装,可以选择安装putty,https://putty.org,稍后我们将讲下在在windws下如何用putty通过公钥连接。

先查一下主目录下的.ssh目录,如果有相关密钥先备份一下,免被覆盖。

ls -l ~/.ssh

ssh-keygen -b 4096

生成密钥对,设置4096位,比默认更安全,下一步可以设置密钥的保存位置名称,保护密码等,默认在~/.ssh目录下生成两个文件:id_rsa和id_rsa.pub。我们可以查看公钥,会发现最后附带了本机的用户名和机器名。

cat ~/.ssh/id_rsa.pub

再将公钥拷贝到需要远程访问的服务器(假设为192.168.1.1),有一个专门的命令ssh-copy-id完成该操作

ssh-copy-id root@192.168.1.1

拷贝之后将在服务器的~/.ssh目录下的authorized_keys文件添加一行,新添的行的内容就是刚才拷贝的客户端的公钥。这个文件可以有多行,保存各个客户端的公钥。

如果之前没有其他客户端拷贝过公钥,将自动生成该文件并添加第一行。

现在我们再试下访问服务器:

ssh root@192.168.1.1

将不再要求输入root密码直接进入了服务器。

现在说一下windows下如何通过公钥连接

PuTTy有一个自带工具PuTTygen,可以生成公私钥。在UI界面上我们可以将默认的2048改成4096,生成两个密码后分别保存。

然后我们再登陆到远端服务器,在服务器的 ~/.ssh/authorized_keys文件中添加一行,内容为PuTTygen生成的公钥。

再在Connection-SSH-Auth设置里,选择私钥的路径让PuTTy能找到它并保存。

下次就可以用PuTTy连到该服务器不用输用户密码了。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注