ECS服务器配置密钥登录及常用日志
一、介绍
1、SSH(22端口)是Secure Shell Protocol的简写,由IETF网络工作小组(Network Working Group)制定;在进行数据传输之前,SSH先对联机数据包通过加密技术进行加密处理,加密后在进行数据传输。确保了传递的数据安全。SSH服务支持安全认证机制,就是密钥登录,这种方式是比较安全的登入方式。本文将实际操作在服务器中创建新用户,同时使用密钥进行登录(免密码)。
2、客户端使用iterm2 和 FinalShell进行远程连接,服务器系统为CentOS7.4。
3、记录一些常用日志的查看方式。
二、步骤简介
1、购买阿里ECS服务器,配置相关安全组,设置root密码等(这些过程省略介绍)。
2、在服务器上创建其他用户。
3、使用相应用户登录服务器,并创建密钥对。
4、在服务器安装公钥,同时,将创建好的私钥,下载到本地保存。
5、设置服务器ssh的配置文件。
6、在本地的各类终端中加载私钥,实现远程(免密码)登录。
Attention:本文主要讲述的是客户端登录到远程服务器上生成密钥对,同时密钥对记录在服务器上,私钥拷贝到本地。当然,也可以客户端在本地生成好密钥对,然后将公钥上传到服务器,自己保留好本地生成的私钥,同样按照上面第4步进行服务器公钥的安装,这里不做特殊说明了。
三、详细步骤说明
1、用户操作
(1) 创建用户 ,/home 目录下会自动生成相应的用户文件夹
1 [root@cleven_server ~]# adduser new_user 2 [root@cleven_server ~]# passwd new_user 3 更改用户 new_user 的密码 。 4 新的 密码: 5 重新输入新的 密码: 6 passwd:所有的身份验证令牌已经成功更新。 7 [root@cleven_server ~]#
(2)查看、删除用户
<1> 查看系统中有哪些用户:cut -d : -f 1 /etc/passwd
<2> 查看可以登录系统的用户:cat /etc/passwd | grep -v /sbin/nologin | cut -d : -f 1
<3> 用户列表文件:/etc/passwd 用户组列表文件:/etc/group
<4> 查看登录用户:who 查看某一用户:w 用户名
<5> 查看用户登录历史记录:last
<6> 删除用户:userdel -rf name
(3)为用户分配root权限 (可选)
[root@cleven_server ~]# vim /etc/sudoers
或者,root用户下 直接输入命令 visudo 也即可修改
[root@cleven_server ~]# visudo
找到该行:
##Allow root to run any commands anywhere
root ALL=(ALL) ALL
在下面添加:
1 ## Allow root to run any commands anywhere 2 root ALL=(ALL) ALL 3 new_user ALL=(ALL) ALL
2、生成密钥 (客户端连接服务器,在服务器端生成密钥)
(1)确认服务器SSH服务
<1> 检查ssh的安装 :service sshd status 或者 systemctl status sshd
<2> 如果提示错误,则进行安装:yum install sshd 或者 yum install openssh-server
<3> 启动:service sshd start 或者 systemctl start sshd
<4> 重启:service sshd restart 或者 systemctl restart sshd
(2)切换new_user登录,生成密钥对
1 [new_user@cleven_server /]$ ssh-keygen -t rsa 2 Generating public/private rsa key pair. 3 Enter file in which to save the key (/home/new_user/.ssh/id_rsa): 4 Created directory '/home/new_user/.ssh'. 5 Enter passphrase (empty for no passphrase): 6 Enter same passphrase again: 7 Your identification has been saved in /home/new_user/.ssh/id_rsa. 8 Your public key has been saved in /home/new_user/.ssh/id_rsa.pub. 9 The key fingerprint is: 10 SHA256:0KrowSHBBZ16tHjaQhr+2bcbEyqonlFvkjHxjrMfKCI new_user@cleven_server 11 The key's randomart image is: 12 +---[RSA 2048]----+ 13 | .o.. | 14 |. .+ . | 15 |..+.. . . | 16 |.= +o o | 17 |=.*+ ...S | 18 |.*o+O.. . | 19 |E+*B+* o | 20 |+.++*...o | 21 |oo.....oo | 22 +----[SHA256]-----+ 23 [new_user@cleven_server /]$
(3)上文注解
ssh-keygen -t rsa 命令后一路回车即可:
<1> Enter file in which to save the key (/home/new_user/.ssh/id_rsa):
该命令提示的意思是:让我们定义私钥的存放路径,默认存在的路径是/home/new_user/.ssh/id_rsa (如果是root账号,路径在/root/.ssh/id_rsa)
<2> Enter passphrase (empty for no passphrase):
该命令提示的意思是:定义私钥的密码,一般为了免密默认的留空,直接的回车
<3> Enter same passphrase again:
该命令提示的意思是:确认密码设置
经过上面三次回车后,最后在/home/new_user/.ssh/id_rsa下面生成了公钥和私钥
(4)查看生成的密钥(.pub为公钥)
1 [new_user@cleven_server /]$ cd /home/new_user/.ssh 2 [new_user@cleven_server .ssh]$ ll 3 总用量 8 4 -rw------- 1 new_user new_user 1675 5月 21 13:06 id_rsa 5 -rw-r--r-- 1 new_user new_user 404 5月 21 13:06 id_rsa.pub 6 [new_user@cleven_server .ssh]$
3、服务器上安装公钥
注意:使用ssh-keygen -t rsa方式生成相关密匙信息,此时默认的会有对应的:/home/new_user/.ssh/这个目录存在,如果没有的话(使用其他ssh工具生成密钥或者在客户端本地生成密钥的时候)就需要手动创建此目录。
(1)安装公钥:主要是把 id_rsa.pub 内容复制到 /home/new_user/.ssh/authorized_keys
1 [new_user@cleven_server ~]$ cd /home/new_user/.ssh 2 [new_user@cleven_server .ssh]$ cat id_rsa.pub >> authorized_keys 3 [new_user@cleven_server .ssh]$ chmod 600 authorized_keys (仅用户自身有读写权限) 4 [new_user@cleven_server .ssh]$ chmod 700 /home/new_user/.ssh (仅用户自身有读写权限) 5 [new_user@cleven_server .ssh]$
(2)查看安装
注意:文件authorized_keys 和 文件夹.ssh 的所有者必须是后面进行SSH远程登录的用户(同名),如果不同,使用命令:chown 用户名 文件名 -R 来更改所有者。
1 [new_user@cleven_server .ssh]$ ll 2 总用量 12 3 -rw------- 1 new_user new_user 404 5月 21 13:29 authorized_keys 4 -rw------- 1 new_user new_user 1675 5月 21 13:06 id_rsa 5 -rw-r--r-- 1 new_user new_user 404 5月 21 13:06 id_rsa.pub 6 [new_user@cleven_server .ssh]$
4、下载私钥到本地,后面将使用此密钥进行登录(可以将id_rsa重命名为 new_user_ECS.pem,方便管理和区分)
(1)使用scp命令从远程拷贝到本地,以下是在本地终端输入:
Cleven:~ Cleven$ scp new_user@39.xx.xx.xx:/home/new_user/.ssh/id_rsa /User/Cleven/Desktop
(2)客户端使用FTP软件(FileZilla)
5、在服务器上配置SSH
(1)编辑配置文件。注意,是sshd_config(服务端配置文件) ,不是ssh_config(客户端配置文件)
[root@cleven_server ~]# vim /etc/ssh/sshd_config
(2)配置内容(几个关键处)
#root用户能否通过 SSH 登录,默认为yes PermitRootLogin yes #完成全部设置并以密钥方式登录成功后,可以禁用密码登录。为了安全,建议禁用,但是注意实在密钥登录可行之后禁用 PasswordAuthentication yes #默认为yes,是否让 sshd 去检查用户家目录或相关档案的权限数据。如果设置成yes必需保证存放公钥的文件夹的拥有者与登陆用户名是相同的。 #这是为了担心使用者将某些重要档案的权限设错,可能会导致一些问题所致。例如使用者的 ~.ssh/ 权限设错时,某些特殊情况下会不许用户登入(设置成no可登录) #这通常是必要的,因为新手经常会把自己的目录和文件设成任何人都有写权限。 StrictModes no #是否允许密钥登录,仅针对SSH第一代通信协议
#在CentOS7.4中被废除了,CentOS7开始预设使用第二代通讯协议
#第二代SSH通讯协议的密钥验证选项是 PubkeyAuthentication
RSAAuthentication yes
#允许公钥认证(密钥登录),自制的公钥数据就放置于用户家目录下的.ssh/authorized_keys 内
#替代了第一代协议中的 RSAAuthentication
PubkeyAuthentication yes
AuthorizedKeysFile ~/.ssh/authorized_keys
6、本地使用密钥完成登录 ,如出现异常,可使用 ssh -v检查
(1)iterm2
<1> 配置描述文件
<2> 本地添加密钥:第4步中下载到本地的密钥
➜ / ssh-add -k /Users/cleven/Desktop/new_user_ECS.pem
<3> 开启登录
(2)FinalShell
四、查看常用日志及包括用户登录记录
1、列举一些常见的日志文件:/var/log
注:可以用file命令查看文件的类型。大多数日志文件是纯文本文件,可以用cat 、head来查看。还有一些是二进制日志文件,需要用专用的命令来查看。
日志 | 类 型 | 打开命令 | 解释 |
secure |
文本 |
cat、head、tail 等 |
安全相关,主要是用户认证,如登录 、创建和删除账号 、sudo等 |
audit/audit.log | 文本 | cat、head、tail | 审计日志。跟用户账号相关 |
messages | 文本 | cat、head、tail | 记录系统和软件的绝大多数消息。如服务启动 、停止 、服务错误等。 |
boot.log | 文本 | cat、head、tail | 系统启动日志。能看到启动流程。 |
cron | 文本 | cat、head、tail | 计划任务日志。会记录crontab计划任务的创建、执行信息。 |
dmesg | 文本 | dmesg、cat等 | 硬件设备信息(device)。纯文本,也可以用dmesg命令查看。 |
yum.log | 文本 | cat、head、tail | yum软件的日志。记录yum安装、卸载软件的记录。 |
lastlog | 二进制 | lastlog | 最后登录的日志。 |
btmp | 二进制 | lastb | 登录失败的信息(bad)。 |
wtmp | 二进制 | last | 所有正确登录的用户,往回搜索wtmp来显示自从文件第一次创建以来登录过的用户。 |
utmp | 二进制 |
w,who ,user |
记录当前登录进系统的各个用户。 w命令查询utmp文件并显示当前系统中每个用户和它所运行的进程信息。 who命令查询utmp文件并报告当前登录的每个用户。 user用单独的一行打印出当前登录的用户,每个显示的用户名对应一个登录会话 |
2、剔除在线用户步骤
(1)查看在线用户 : who , w
(2)查看在线用户pid : ps -ef | grep pts/1
(3)杀掉进程,剔除用户:kill -9 23091
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现