Linux SSH交互式脚本,去除yes/no的提示

本文介绍了解决Linux SSH连接时出现的The authenticity of host can't be established提示的方法。提供了两种解决方案:一是通过添加参数-o StrictHostKeyChecking=no直接跳过提示;二是修改配置文件/etc/ssh/ssh_config或$HOME/.ssh/config中的StrictHostKeyChecking和UserKnownHostsFile设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux用户在使用ssh编译脚本的时候,出现了The authenticity of host can’t be xx established 提示,虽然不影响ssh的连接,但在交互式脚本编写中,就会影响脚本的正常运行如(expect交互式脚本),比较烦人了,下面提供去除该提示的方法。

       1. 使用ssh连接远程主机时加上“-o StrictHostKeyChecking=no”的选项,如下:(推荐!!!)

做法是使用-o 这个参数,在ssh/scp里加上 -o "StrictHostKeyChecking no" 即可跳过这个yes/no询问,直接进入下一步,例:

       Use the -o option:
       scp -o "StrictHostKeyChecking no" 1.txt user@host:1.txt 
       ssh -o "StrictHostKeyChecking no" user@host

  2. 一个彻底去掉这个提示的方法是,修改/etc/ssh/ssh_config文件(或$HOME/.ssh/config)中的配置,添加如下两行配置:

  一般为:StrictHostKeyChecking ask

       可改为:StrictHostKeyChecking no

               UserKnownHostsFile /dev/null

  修改好配置后,重新启动sshd服务即可,命令为:/etc/init.d/sshd restart (或 service sshd restart )

  当然,这是内网中非常信任的服务器之间的ssh连接,所以不考虑安全问题,就直接去掉了主机密钥(host key)的检查。

  ssh中遇到的“Host key verification failed.”问题,也是和“StrictHostKeyChecking”配置有关。

  上面就是Linux去除ssh连接时The authenticity of host can’t be xx established 提示的方法介绍了,如果你觉得该提示一直出现很烦的话,可选择去掉。

### 自动跳过 SSH 提示的方法 为了实现 SSH 脚本能够自动跳过需要手动输入 'yes' 的情况,可以配置 `StrictHostKeyChecking` 参数为 `no`。此参数用于控制 SSH 客户端是否严格检查主机密钥。如果设置为 `no`,则客户端会自动接受未知的主机密钥而提示用户确认[^3]。 以下是通过命令行或配置文件的方式实现该功能的具体方法: #### 方法一:通过命令行指定选项 可以通过 `-o StrictHostKeyChecking=no` 来禁用主机密钥检查: ```bash ssh -o StrictHostKeyChecking=no user@hostname ``` 这种方法适用于临时场景下的单次连接操作,会影响全局配置。 #### 方法二:修改 SSH 配置文件 对于更频繁的操作,可以在用户的 SSH 配置文件中永久启用这一设置。编辑 `~/.ssh/config` 文件并添加如下内容: ```plaintext Host hostname User user HostName hostname StrictHostKeyChecking no ``` 保存后,每次针对特定主机执行 SSH 连接时都会自动忽略首次连接时的 'yes/no' 提示[^4]。 需要注意的是,在生产环境中关闭严格的主机密钥验证可能会带来安全风险,因为这使得中间人攻击更容易得逞。因此建议仅在受控环境下使用上述技巧,并考虑其他替代方案如预先获取远程服务器公钥来避免交互式提示。 ```python import paramiko client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect('hostname', username='user', password='password') stdin, stdout, stderr = client.exec_command('ls') print(stdout.read().decode()) client.close() ``` 以上 Python 示例展示了如何利用 Paramiko 库创建一个无需人工干预即可完成认证过程的安全 Shell 会话[^5]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值