用户账号及密码过期
用到的命令为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连到该服务器不用输用户密码了。