.ssh/known_hosts 存储ssh指纹
sshd 服务器端
/etc/ssh/sshd_config 服务器端的配置文件
man 5 sshd_config 服务器端的配置文件帮助
echo root:1111|chapasswd 修改密码
openssl rand -base 64 9 随机取9位密码(随机数经过base编码取9位)

ssh常用参数:

Port  22     #生产建议修改
ListenAddress ip
LoginGraceTime 2m
PermitRootLogin yes #默认ubuntu不允许root远程ssh登录
StrictModes yes   #检查.ssh/文件的所有者,权限等
MaxAuthTries   6     #pecifies the maximum number of authentication 
attempts permitted per connection. Once the number of failures reaches half this 
value, additional failures are logged. The default is 6.
MaxSessions  10         #同一个连接最大会话
PubkeyAuthentication yes     #基于key验证
PermitEmptyPasswords no      #空密码连接
PasswordAuthentication yes   #基于用户名和密码连接
GatewayPorts no
ClientAliveInterval 10 #单位:秒
ClientAliveCountMax 3 #默认3
UseDNS yes #提高速度可改为no
GSSAPIAuthentication yes #提高速度可改为no
MaxStartups    #未认证连接最大值,默认值10
Banner /path/file
#以下可以限制可登录用户的办法:
AllowUsers user1 user2 user3
DenyUsers user1 user2 user3
AllowGroups g1 g2
DenyGroups g1 g2

在 ubuntu 上启用 root 远程ssh登录

#修改sshd服务配置文件
vim /etc/ssh/sshd_config 
#PermitRootLogin prohibit-password 注释掉此行
PermitRootLogin yes 修改为下面形式
systemctl restart sshd

ssh(telentPro)
ssh直接连接主机,并存储对方公钥以及指纹(指纹唯一。如果需要删除指纹就性 .ssh/known_hosts)
自动同意:StrictHostKeyChecking=no 或者修改配置文件StrictHostKeyChecking no

sshpass自动登录ssh工具

-p 后跟密码
-f 保存密码的文件名
-e 变量密码
sshpass -p 123465 ssh  StrictHostKeyChecking=no 10.1.1.1 'hostname'

公钥交换原理

SSH与PAM模块全攻略:打造更安全的远程登录环境!_ulimit

SSH与PAM模块全攻略:打造更安全的远程登录环境!_ulimit_02

ssh -keygen生成公私钥对
ssh -copy-id root@10.1.1.1 发生公钥给其他主机
加强版:(通过各个主机都使用同个密钥对,解决多个主机互相使用ssh需要重新创建公私钥对增加复杂性)
ssh -keygen #生成公私钥对
sshpass -p $pass ssh-copy-id -o StrictHostKeyChecking=no 127.0.0.1 #将公钥拷贝到自己主机上
rsync -a .ssh 10.0.0.#id:/root/ #将主机的公私钥对发送到其他主机上

scp

从本地复制文件到远程主机:
scp file.txt user@remote_host:/path/to/destination
从远程主机复制文件到本地:
scp user@remote_host:/path/to/file.txt /local/destination
从远程主机复制整个目录到本地:
scp -r user@remote_host:/path/to/directory /local/destination
从本地复制整个目录到远程主机
scp -r /local/directory user@remote_host:/path/to/destination
使用自定义 SSH 端口复制文件:
scp -P 2222 file.txt user@remote_host:/path/to/destination
使用 scp 命令同时压缩和加速传输:
scp -C -l 1000 file.txt user@remote_host:/path/to/destination

rsync(scpPro):

-a, --archive:归档模式,以递归方式复制文件,并保持所有文件属性。
示例:rsync -a source/ destination/
-v, --verbose:详细输出模式,显示 rsync 的执行过程。
示例:rsync -av source/ destination/
-r, --recursive:递归复制目录及其内容。
示例:rsync -r source/ destination/
-u, --update:仅复制源文件中更新的部分到目标位置。
示例:rsync -u source/ destination/
-n, --dry-run:模拟执行,显示执行 rsync 命令后会执行的操作,但不实际执行。
示例:rsync -nav source/ destination/
-z, --compress:启用数据压缩传输,减少网络带宽占用。
示例:rsync -az source/ destination/
-P, --partial --progress:显示传输进度,并支持断点续传。
示例:rsync -avP source/ destination/
-e, --rsh=COMMAND:指定远程 shell 命令,用于远程传输。
示例:rsync -av -e "ssh -p 22" source/ user@remote:/destination
--delete:删除目标位置上没有源位置的文件。
示例:rsync -av --delete source/ destination/
--exclude=PATTERN:排除指定的文件或目录。
示例:rsync -av --exclude='*.log' source/ destination/

sudo 授权
/etc/sudoers 授权配置

user: 运行命令者的身份
host: 通过哪些主机
(runas):以哪个用户的身份
command: 运行哪些命令

配置例子:
root ALL=(ALL) ALL
例子: wang 10.0.0.1=(root) NOPASSWD:#不需要输密码# /usr/bin/mount /dev/cdrom /mnt
允许wang用户在10.0.1以root身份运行特定命令而无需输入密码
别名例子:
user_Alias Z=ZZ,LL
USER_Alias D=tom
Host_Alias S=www.1.com
Runas_Alias O=root
Cmnd_Alias SY=/bin/chown,/bin/chmod
Z S=SY
别名例子:
Defaults:wang runas_default=tom
wang ALL=(tom,jerry) ALL
wang$ sudo cmd  #默认代表tom执行cmd
wang$ sudo -u jerry cmd
不允许访问 例子:
wang 192.168.1.6,192.168.1.8=(root) /usr/sbin/,!/usr/sbin/useradd

PAM(模块)
模块是linux内核中的一部分,程序只需要通过调用模块去使用内核功能

/etc/pam.d/
/lib64/security/模块配置文件
/etc/security

PAM配置格式(#如果程序复杂才需要配置文件)
application type control module-path arguments

application:指服务名,如:telnet、login、ftp等,服务名字“OTHER”代表所有没有在该文件中明确
配置的其它服务
type:指模块类型,即功能
control :PAM库该如何处理与该服务相关的PAM模块的成功或失败情况,一个关健词实现
module-path: 用来指明本模块对应的程序文件的路径名
Arguments: 用来传递给该模块的参数

模块类型
auth:用于进行用户认证的模块。当用户尝试登录时,将使用指定的模块进行身份验证。
account:用于进行账户管理的模块。例如,检查用户是否被锁定或是否允许登录。
password:用于修改用户密码的模块。例如,允许用户通过特定方式更改密码。
session:用于在用户登录和注销时进行会话管理的模块。例如,记录用户登录和注销事件。

control
1.required:模块的成功验证是必需的。如果验证失败,则 PAM 将立即返回失败,并且不会继续执行后续模块。如果验证成功,则继续执行后续模块。
2.sufficient:如果模块成功验证,则 PAM 将立即返回成功,并且不会继续执行后续模块。如果验证失败,则继续执行后续模块。如果所有的 sufficient 模块都失败,则认证失败。
3.requisite:类似于 required,但是如果验证失败,则 PAM 将立即返回失败,并且不会继续执行后续模块。如果验证成功,则继续执行后续模块。
4.optional:模块的成功验证是可选的。即使验证失败,PAM 也会继续执行后续模块。通常与 required 或 sufficient 搭配使用。
5.include:包含另一个 PAM 配置文件中的配置。这允许在配置中重用其他服务的配置。

module-path
模块文件所在绝对路径

**Argument **
debug :该模块应当用syslog( )将调试信息写入到系统日志文件中
no_warn :表明该模块不应把警告信息发送给应用程序
use_first_pass :该模块不能提示用户输入密码,只能从前一个模块得到输入密码
try_first_pass :该模块首先用前一个模块从用户得到密码,如果该密码验证不通过,再提示用户
输入新密码
use_mapped_pass 该模块不能提示用户输入密码,而是使用映射过的密码
expose_account 允许该模块显示用户的帐号名等信息,一般只能在安全的环境下使用,因为泄漏
用户名会对安全造成一定程度的威胁

常用模块:

pam_nologin.so(普通用户登录限制)
启用在pamd下创建nologin即可 普通用户无法远程登录
{在Centos7以上版本中,使用Systemd替代了之前的SysV。/etc/security/limits.conf文件的配置作
用域缩小了。/etc/security/limits.conf的配置,只适用于通过PAM认证登录用户的资源限制,它对
systemd的service的资源限制不生效。因此登录用户的限制,通过/etc/security/limits.conf
与/etc/security/limits.d下的文件设置即可。
对于systemd service的资源设置,则需修改全局配置,全局配置文件放在/etc/systemd/system.conf
和/etc/systemd/user.conf,同时也会加载两个对应目录中的所有.conf文
件/etc/systemd/system.conf.d/.conf和/etc/systemd/user.conf.d/.conf。system.conf
是系统实例使用的,user.conf是用户实例使用的}

pam_limits.so
pam_limits.so 是 PAM(Pluggable Authentication Modules)框架中的一个模块,用于设置和管理用户的资源限制。它通过配置文件 /etc/security/limits.conf 和 /etc/security/limits.d/ 目录下的文件,控制用户进程的资源使用,从而帮助管理员防止资源滥用,维护系统稳定性。

功能和用途
pam_limits.so 模块主要用于设置以下资源限制:

core:最大核心文件大小(以块为单位)。
data:进程数据段的最大大小(以 KB 为单位)。
fsize:文件的最大大小(以 KB 为单位)。
memlock:进程可锁定的内存大小(以 KB 为单位)。
nofile:每个进程可打开的最大文件描述符数。
rss:进程常驻集的最大大小(以 KB 为单位)。
stack:进程堆栈的最大大小(以 KB 为单位)。
cpu:进程的最大 CPU 时间(以分钟为单位)。
nproc:每个用户可拥有的最大进程数。
as:进程的地址空间限制(以 KB 为单位)。
maxlogins:用户可同时登录的最大会话数。
priority:进程调度优先级。
locks:进程可拥有的最大文件锁数。
sigpending:进程可排队的最大信号数。
msgqueue:消息队列的最大大小(以字节为单位)。
nice:进程的调度优先级。
rtprio:实时调度优先级。

配置文件
/etc/security/limits.conf
这是主要的配置文件,用于定义资源限制。文件格式如下:

<domain>    <type>    <item>    <value>

domain:可以是用户名、用户组名(前面加 @),或者 *(表示所有用户)。
type:可以是 soft(软限制)或 hard(硬限制)。
item:要限制的资源类型。
value:限制值。

# 限制所有用户最大打开文件数为 1024

*        soft    nofile          1024
*        hard    nofile          4096

# 限制用户 foo 的最大进程数为 50
foo      soft    nproc           50
foo      hard    nproc           100

# 限制用户组 admin 的最大核心文件大小为 0
@admin   hard    core            0

# 限制所有用户的最大虚拟内存大小为 500000 KB
*        soft    as              500000
*        hard    as              1000000
/etc/security/limits.d/ 目录
在这个目录下,管理员可以添加更多的配置文件,这些文件会被 pam_limits.so 模块读取并应用。这种方式便于分离和组织不同的限制规则。

对于systemd service的资源设置,则需修改全局配置,全局配置文件放在/etc/systemd/system.conf
和/etc/systemd/user.conf,同时也会加载两个对应目录中的所有.conf文件/etc/systemd/system.conf.d/.conf和/etc/systemd/user.conf.d/.conf。system.conf
是系统实例使用的,user.conf是用户实例使用的。

ulimit命令

-H 设置硬件资源限制.
-S 设置软件资源限制.
-a 显示当前所有的资源限制.
-c size:设置core文件的最大值.单位:blocks
-d size:设置数据段的最大值.单位:kbytes
-f size:设置创建文件的最大值.单位:blocks
-l size:设置在内存中锁定进程的最大值.单位:kbytes
-m size:设置可以使用的常驻内存的最大值.单位:kbytes
-n size:设置内核可以同时打开的文件描述符的最大值.单位:n
-p size:设置管道缓冲区的最大值.单位:kbytes
-s size:设置堆栈的最大值.单位:kbytes
-t size:设置CPU使用时间的最大上限.单位:seconds
-u size:最大用户进程数
-v size:设置虚拟内存的最大值.单位:kbytes
unlimited 是一个特殊值,用于表示不限制
#说明
查询时,若不加H或S参数,默认显示的是软限制
修改时,若不加H或S参数,两个参数一起改变

chrony(ntp时间同步)

/etc/chrony.conf 配置
server ntp.alicyuncom iburst #设置同步服务器
allow 0.0.0.0/0 #设置谁都可以同步
local stratum 10 允许没有外网也可以同步

chronyc sources -v or ntpdate $ip(cento8以后不在使用) 时间同步

链接:https://www.cnblogs.com/civetcat/p/18180295