记录一下的 Linux 服务器的基本操作方便查找:

以下命令都在 Centos 7 运行

添加用户

1
2
# 根用户执行
$ useradd chris

修改用户登录密码

1
2
# 根用户执行
$ passwd chris

禁止 root 用户远程登录

首先当然需要新建一个用户用于远程登录。

打开文件

1
2
# 根用户编辑文件
$ vim /etc/ssh/sshd_config

1
PermitRootLogin yes

改为:

1
PermitRootLogin no

再重启 sshd 服务:

1
2
# 根用户执行
$ systemctl restart sshd

退出登录,再用新创建的用户去登录。

如果需要 root 用户的时候可以通过 su (switch user) 命令切换到 root 用户,或者将新创建的用户加入 sudo 列表中。

把用户加入 sudo 列表

编辑 /etc/sudoers

root ALL=(ALL) ALL 下新增需要新增权限的用户

1
2
root    ALL=(ALL)       ALL
chris ALL=(ALL) ALL

使用 ssh 公钥登录

首先本机生成 ssh 公钥和私钥:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/xxx/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/xxx/.ssh/id_rsa.
Your public key has been saved in /home/xxx/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:zUOQ0DsCnVSIM+ZZlatdi2YsHhdhkFNf80p82ywgz8o xxx@xxx
The key's randomart image is:
+---[RSA 2048]----+
| ++@=o o |
| * B *o o o |
| o * o ++ + o |
| o . =+.= + + |
| =S=+.+ o o|
| + B..o . |
| . * E |
| . |
| |
+----[SHA256]-----+

如果提示需要输入密码,输入你想要的密码即可。不输入密码也可以。

把公钥 ~/.ssh/id_rsa.pub 上传到服务器:

1
2
## 本机执行
$ scp ~/.ssh/id_rsa.pub [email protected]:~

把刚刚从客户端上传到服务器的公钥追加到 ~/.ssh/authorized_keys 文件中,如果没有这个文件则新建文件即可:

1
2
3
## 服务器执行
$ touch ~/.ssh/authorized_keys ## 如果这个文件不存在才需要执行
$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

使用 root 用户编辑文件 /etc/ssh/sshd_config:

1
2
## 服务器使用 root 执行
$ vim /etc/ssh/sshd_config

将下面的配置解除注释或者配置成下面这样样:

1
2
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

使用 root 用户重启 sshd:

1
$ systemctl restart sshd

退出登录再用同一个用户登录,即提示需要输入刚刚生成 ssh key 时输入的密码:

1
2
$ ssh [email protected]
Enter passphrase for key '/Users/xxx/.ssh/id_rsa':

使用把用户加入到某个用户组中

1
2
# 把用户 chris 转到 root 用户组中(一般不这样使用)
$ usermod -G root chris

注意:此时 chris 会离开原先的用户组,需要使用 -a 参数把用户追加到用户组:

1
2
# 把用户 chris 追加到 root 用户组中
$ usermod -a -G root chris
1
2
3
# 查看用户在什么分组
$ groups chris
chris : chris root

chris 主组为 chris,另外还属于 root 组。

把用户移出分组

1
$ gpasswd -d chris root

或者编辑 /etc/group 文件

1
2
3
$ vim /etc/group
# 把 root:x:0:chris 改为 root:x:0:
# 即表示把 chris 移出 root 组

参考

Linux 修改 SSH 端口 和 禁止 Root 远程登陆