我们在写 shell 脚本的时候通常会需要用 ssh 登录到远程服务器执行一些命令。
这个时候就懵逼了,我 ssh 直接执行过去了,怎么去应答这个询问
啊。 这个时候就需要知道 ssh 有一个非交互方式登录 StrictHostKeyChecking
主机公钥确认 StrictHostKeyChecking
StrictHostKeyChecking=no
最不安全的级别,当然也没有那么多烦人的提示了,相对安全的内网测试时建议使用。如果连接server的key在本地不存在,那么就自动添加到文件中(默认是known_hosts),并且给出一个警告。StrictHostKeyChecking=ask
默认的级别,就是出现刚才的提示了。如果连接和key不匹配,给出提示,并拒绝登录。StrictHostKeyChecking=yes
最安全的级别,如果连接与key不匹配,就拒绝连接,不会提示详细信息。
链接:https://www.jianshu.com/p/ebcf41c75786
ssh scp等消除每次问yes/no方法
用命令 ssh -l username hostname
Are you sure you want to continue connecting (yes/no)?
1、 这个是ssh安全认证是的一个RSA认证。
此处必须选择yes才能连接。 第一次yes后,他会询问你是否永久把这个RSA认证加入本地,选择yes后,以后不会再出现提醒。 每次登陆只需要输入密码即可。
2、 也可以不用输入1中的yes,但是需要修改本机配置。
/etc/ssh/ssh_config 中的
# StrictHostKeyChecking ask
改成 StrictHostKeyChecking no
这样多此一举的询问就不在了
3. 重启服务生效: systemctl restart sshd
----------------------------------------------------------------------------
#Code:
mkdir -p ~/.ssh && echo "Host *" > ~/.ssh/config && echo "StrictHostKeyChecking no" >> ~/.ssh/config && echo "UserKnownHostsFile /dev/null" >> ~/.ssh/config
sudo chmod 400 ~/.ssh/config
cat ~/.ssh/config
echo "StrictHostKeyChecking no" >> /etc/ssh/ssh_config
cat /etc/ssh/ssh_config
systemctl restart sshd