解释这段shellssh -o IdentitiesOnly=yes -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null
时间: 2024-05-24 11:11:10 浏览: 172
这是一个用来连接ssh服务器的命令,其中的参数分别代表:
- "-o IdentitiesOnly=yes":只使用指定的密钥登录。
- "-o StrictHostKeyChecking=no":忽略对主机公钥的检查,避免了第一次连接时需要手动确认。
- "-o UserKnownHostsFile=/dev/null":将已知的主机公钥记录文件设为/dev/null,禁用了记录新的主机公钥的功能。
相关问题
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 客户端都会检查该服务器的公钥指纹是否和本地保存的一致,从而确保连接的安全。
阅读全文