stricthostkeychecking=no
时间: 2023-04-26 09:02:31 浏览: 1084
stricthostkeychecking=no是SSH客户端的一个选项,用于在连接到新主机时跳过主机密钥检查。这个选项通常用于自动化脚本或批处理文件中,以避免在第一次连接时出现交互式提示。但是,这也会增加安全风险,因为它允许连接到未知的主机,可能会受到中间人攻击的威胁。因此,建议仅在必要时使用此选项,并在连接后手动验证主机密钥。
相关问题
ssh -o StrictHostKeyChecking=no 解释下
`ssh -o StrictHostKeyChecking=no` 是一条 SSH 命令,其中 `-o` 选项用于指定 SSH 客户端的配置选项,`StrictHostKeyChecking=no` 是其中的一个配置项,它的作用是关闭 SSH 客户端的主机密钥检查功能。
当第一次使用 SSH 客户端连接一个新的主机时,客户端会提示用户确认主机的公钥指纹,如果用户确认了该指纹,客户端会将该指纹保存到本地的 known_hosts 文件中。之后,每次连接该主机时,客户端都会检查该主机的公钥指纹是否和本地保存的一致,如果不一致,客户端会提示用户该主机的公钥可能被恶意篡改,从而阻止连接。
在某些情况下(例如自动化部署、批量操作等),关闭主机密钥检查功能可以方便脚本自动化执行,但同时也会带来一定的安全风险,因为这样可能会导致连接到非法的主机上。
重新输出脚本,不使用ssh -o StrictHostKeyChecking=no参数
好的,为您提供如下脚本,不使用 `ssh -o StrictHostKeyChecking=no` 参数:
```bash
#!/bin/bash
# A服务器的IP地址和用户名
A_IP="A服务器IP地址"
A_USER="A服务器用户名"
# B服务器的IP地址和用户名
B_IP="B服务器IP地址"
B_USER="B服务器用户名"
# 备份源目录
SRC_DIR="/srun3/db_backup/ /srun3/redis_backup/"
# 备份目标目录
DEST_DIR="/remote_back"
# SSH连接B服务器并添加B服务器的公钥到known_hosts文件中
ssh -T ${B_USER}@${B_IP} << EOF
echo -e "yes\n" | ssh-keyscan ${B_IP} >> ~/.ssh/known_hosts
exit
EOF
# rsync命令备份
rsync -az --delete -e "ssh ${B_USER}@${B_IP}" ${SRC_DIR} ${B_USER}@${B_IP}:${DEST_DIR}
```
在上述脚本中,使用了 here document 语法来在 SSH 会话中执行命令。首先,通过 `ssh-keyscan` 命令获取 B 服务器的公钥,并将其添加到 SSH 客户端的 known_hosts 文件中。然后,使用修改后的 rsync 命令进行备份,其中 `-e "ssh ${B_USER}@${B_IP}"` 用于指定 SSH 连接的用户名和 IP 地址。这样,每次连接 B 服务器时,SSH 客户端都会检查该服务器的公钥指纹是否和本地保存的一致,从而确保连接的安全。