How to get rid of `deprecated conversion from string constant to 'char*'` warnings in GCC?

本文讨论了在大型代码库中使用GCC 4.3编译器时出现的字符串常量转换为char*的过时警告问题,并提供了解决方案。

2013-02-26 wcdj

Problem:

So I'm working on an exceedingly large codebase, and recently upgraded to gcc 4.3, which now triggers this warning:

warning: deprecated conversion from string constant to ‘char*’

Obviously, the correct way to fix this is to find every declaration like

char *s = "constant string";

or function call like:

void foo(char *s);
foo("constant string");

and make them const char pointers. However, that would mean touching 564 files, minimum, which is not a task I wish to perform at this point in time. The problem right now is that I'm running with-werror, so I need some way to stifle these warnings. How can I do that?

http://stackoverflow.com/questions/59670/how-to-get-rid-of-deprecated-conversion-from-string-constant-to-char-warnin


I believe passing -Wno-write-strings to gcc will suppress this warning.

<think>好的,我现在需要解决用户遇到的SSH警告问题,提示“Add correct host key in /root/.ssh/known_hosts to get rid of this message”。首先,我得理解这个错误的原因。用户可能在尝试连接到一个远程服务器时,SSH客户端检测到主机密钥发生了变化,或者这是第一次连接,密钥未被记录。 接下来,我应该分步骤解释解决方法。首先,用户需要定位到相关的known_hosts文件,尤其是root用户下的路径。然后,可能需要删除旧的密钥条目或者整个文件。不过,直接删除整个文件虽然有效,但会清除所有已保存的主机密钥,不是最安全的方法。因此,更好的办法是找到对应的行删除。 另外,用户可能需要更新主机密钥。这时候,使用ssh-keyscan命令获取新的密钥并替换旧的条目会更合适。同时,需要提醒用户注意潜在的安全风险,比如中间人攻击,确保他们确实信任该主机。 在结构上,应该先解释错误的原因,再逐步给出解决方案,包括不同情况下的处理方法。最后,强调安全性,让用户明白每一步操作的意义,避免盲目执行命令。还要检查是否有遗漏的细节,比如权限问题或者是否需要重启服务等。确保回答清晰、准确,并且用户能够安全地解决问题。</think>当你在使用SSH连接远程服务器时出现提示"Add correct host key in /root/.ssh/known_hosts to get rid of this message",这意味着本地存储的主机密钥与远程服务器提供的密钥不匹配。以下是分步解释和解决方法: --- ### **原因分析** 1. **首次连接新主机**:SSH首次连接时会自动保存主机密钥到`known_hosts`文件 2. **服务器密钥变更**:常见于以下情况: - 服务器操作系统重装 - SSH服务配置重置 - 服务器IP地址被其他设备占用 --- ### **解决方法** #### **方案1:删除旧记录(推荐)** ```bash # 定位到对应行号后删除(以第15行为例) sudo sed -i '15d' /root/.ssh/known_hosts # 或者直接删除整个文件(慎用) sudo rm /root/.ssh/known_hosts ``` #### **方案2:强制更新密钥** ```bash # 获取新密钥并追加到文件 sudo ssh-keyscan -H your_server_ip >> /root/.ssh/known_hosts ``` --- ### **安全警告** 1. **密钥验证机制**:SSH通过主机密钥验证防止中间人攻击(Man-in-the-Middle) 2. **风险提示**:若不确定服务器是否合法,应联系管理员确认密钥变更原因 3. **权限问题**:操作`/root`目录需要`sudo`权限 --- ### **操作验证** 重新执行SSH连接命令: ```bash ssh root@your_server_ip ``` 此时应该不再出现密钥警告,如果仍有问题,请检查: - 服务器IP/DNS是否输入正确 - 服务器防火墙是否开放SSH端口(默认22) - 本地网络连接是否正常 建议定期使用`ssh-keygen -F your_server_ip`检查密钥指纹是否与服务器一致。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值