13 、 通过 SSH 运行 复 杂的 远程 程 shell 命令
ssh host -l user $(<cmd.txt)
更具移植性的版本:
ssh host -l user “cat cmd.txt
”
14 、过 通过 SSH 将 将 MySQL 数据库 复 制到新服
务器
mysqldump –add-drop-table –extended-
insert –force –log-error=error.log
-uUSER -pPASS OLD_DB_NAME | ssh -C
user@newhost “mysql -uUSER -pPASS
NEW_DB_NAME”
通过压缩的 SSH 隧道 Dump 一个 MySQL 数据
库,将其作为输入传递给 mysql 命令,我认为
这是迁移数据库到新服务器最快最好的方法。
15 、 删除 文本文件中的一行, 修复 “SSH 主
机 密 钥 更 改 ” 的 警 告
sed -i 8d ~/.ssh/known_hosts
16 、从一有 台没有 SSH-COPY-ID 命令 的主机
将 你的 SSH 公 钥 复 制到服务器
cat ~/.ssh/id_rsa.pub | ssh user@machine
“mkdir ~/.ssh; cat >>
~/.ssh/authorized_keys”
如果你使用 Mac OS X 或其 它没有 ssh-
copy-id 命令的*nix 变种,这个命令可以将
你的公钥复制到远程主机,因此你照样可以实
现无密码 SSH 登录。
17 、 实时 时 SSH 网络 吞吐 量测试
yes | pv | ssh $host “cat > /dev/null”
通过 SSH 连接到主机,显示实时的传输速度,
将所有传输数据指向/dev/null,需要先安装
pv。
如果是 Debian:
apt-get install pv
如果是 Fedora:
yum install pv
(可能需要启用额外的软件仓库)。
18 、如 果 建 立 一个可以 重 新 连 接的 远程 程 GNU
screen
ssh -t user@some.domain.com
/usr/bin/screen –xRR
人们总是喜欢在一个文本终端中打开许多
shell , 如 果 会 话 突 然 中 断 , 或 你 按 下 了
“Ctrl-a d”,远程主机上的 shell 不会受
到丝毫影响,你可以重新连接,其它有用的
screen 命 令 有 “ Ctrl-a c” ( 打 开 新 的
shell)和“Ctrl-a a”(在 shell 之间来回
切换),请访问
禁用 root 用户登录
禁用 root 用户登录前,确认普通用户可以以 root 身份登录。例如,允许用户 vivek 使用 sudo 命令以 root 身份登录。
在 Debian/Ubuntu 系统中如何将用户 vivek 添加到 sudo 组中
允许 sudo 组中的用户执行任何命令。 将用户 vivek 添加到 sudo 组中:
$ sudo adduser vivek sudo
使用 id 命令 验证用户组。
$ id vivek
在 CentOS/RHEL 系统中如何将用户 vivek 添加到 sudo 组中
在 CentOS/RHEL 和 Fedora 系统中允许 wheel 组中的用户执行所有的命令。使用 usermod 命令将用户 vivek 添加到 wheel 组中:
$ sudo usermod -aG wheel vivek
$ id vivek
测试 sudo 权限并禁用 ssh root 登录
测试并确保用户 vivek 可以以 root 身份登录执行以下命令:
$ sudo -i
$ sudo /etc/init.d/sshd status
$ sudo systemctl status httpd
添加以下内容到 sshd_config 文件中来禁用 root 登录:
PermitRootLogin no
ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no
禁用密码登录
所有的密码登录都应该禁用,仅留下公匙登录。添加以下内容到 sshd_config 文件中:
AuthenticationMethods publickey
PubkeyAuthentication yes
CentOS 6.x/RHEL 6.x 系统中老版本的 sshd 用户可以使用以下设置:
PubkeyAuthentication yes
限制用户的 ssh 访问
默认状态下,所有的系统用户都可以使用密码或公匙登录。但是有些时候需要为 FTP 或者 email 服务创建 UNIX/Linux 用户。然而,这些用户也可以使用 ssh 登录系统。他们将获得访问系统工具的完整权限,包括编译器和诸如 Perl、Python(可以打开网络端口干很多疯狂的事情)等的脚本语言。通过添加以下内容到 sshd_config 文件中来仅允许用户 root、vivek 和 jerry 通过 SSH 登录系统:
AllowUsers vivek jerry
当然,你也可以添加以下内容到 sshd_config 文件中来达到仅拒绝一部分用户通过 SSH 登录系统的效果。
DenyUsers root saroj anjali foo
你也可以通过配置 Linux PAM 来禁用或允许用户通过 sshd 登录。也可以允许或禁止一个用户组列表通过 ssh 登录系统
禁用空密码
你需要明确禁止空密码账户远程登录系统,更新 sshd_config 文件的以下内容:
PermitEmptyPasswords no
为 ssh 用户或者密匙使用强密码
为密匙使用强密码和短语的重要性再怎么强调都不过分。暴力破解可以起作用就是因为用户使用了基于字典的密码。你可以强制用户避开字典密码并使用约翰的开膛手工具来检测弱密码。以下是一个随机密码生成器(放到你的 ~/.bashrc 下):
genpasswd() {
local l=
1
[
"
1 [ "
1["l" == “” ] && l=20
tr -dc A-Za-z0-9_ < /dev/urandom | head -c ${l} | xargs
运行:
genpasswd 16
输出:
uw8CnDVMwC6vOKgW
为 SSH 的 22端口配置防火墙
你需要更新 iptables/ufw/firewall-cmd 或 pf 防火墙配置来为 ssh 的 TCP 端口 22 配置防火墙。一般来说,OpenSSH 服务应该仅允许本地或者其他的远端地址访问。
Netfilter(Iptables) 配置
更新 /etc/sysconfig/iptables (Redhat 和其派生系统特有文件) 实现仅接受来自于 192.168.1.0/24 和 202.54.1.5/29 的连接,输入:
-A RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -s 202.54.1.5/29 -m state --state NEW -p tcp --dport 22 -j ACCEPT
如果同时使用 IPv6 的话,可以编辑 /etc/sysconfig/ip6tables (Redhat 和其派生系统特有文件),输入:
-A RH-Firewall-1-INPUT -s ipv6network::/ipv6mask -m tcp -p tcp --dport 22 -j ACCEPT
将 ipv6network::/ipv6mask 替换为实际的 IPv6 网段。
Debian/Ubuntu Linux 下的 UFW
UFW 是 Uncomplicated FireWall 的首字母缩写,主要用来管理 Linux 防火墙,目的是提供一种用户友好的界面。输入以下命令使得系统仅允许网段 202.54.1.5/29 接入端口 22:
$ sudo ufw allow from 202.54.1.5/29 to any port 22
BSD PF 防火墙配置
如果使用 PF 防火墙 /etc/pf.conf 配置如下:
pass in on $ext_if inet proto tcp from {192.168.1.0/24, 202.54.1.5/29} to $ssh_server_ip port ssh flags S/SA synproxy state
修改 SSH 端口和绑定 IP
ssh 默认监听系统中所有可用的网卡。修改并绑定 ssh 端口有助于避免暴力脚本的连接(许多暴力脚本只尝试端口 22)。更新文件 sshd_config 的以下内容来绑定端口 300 到 IP 192.168.1.5 和 202.54.1.5:
Port 300
ListenAddress 192.168.1.5
ListenAddress 202.54.1.5
当需要接受动态广域网地址的连接时,使用主动脚本是个不错的选择,比如 fail2ban 或 denyhosts。
使用 TCP wrappers (可选的)
TCP wrapper 是一个基于主机的访问控制系统,用来过滤来自互联网的网络访问。OpenSSH 支持 TCP wrappers。只需要更新文件 /etc/hosts.allow 中的以下内容就可以使得 SSH 只接受来自于 192.168.1.2 和 172.16.23.12 的连接:
sshd : 192.168.1.2 172.16.23.12
限制 TCP 端口 22 的传入速率(可选的)
netfilter 和 pf 都提供速率限制选项可以对端口 22 的传入速率进行简单的限制。
Iptables 示例
以下脚本将会阻止 60 秒内尝试登录 5 次以上的客户端的连入。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数软件测试工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上软件测试开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-c0Qv0d3p-1712988780299)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上软件测试开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-mqR0CWE7-1712988780300)]
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!