我正在连接到许多使用相同 IP 地址的设备。当我将它们插入路由器时,我会收到警告消息,如果我仍想与远程主机连接,则REMOTE HOST IDENTIFICATION HAS CHANGED!
需要运行。ssh-keygen -f "/home/xxx/.ssh/known_hosts" -R "xx.xx.xx.xx"
我目前的策略:
- 我想从以下位置创建一个缩短的命令:
ssh-keygen -f "/home/xxx/.ssh/known_hosts" -R "xx.xx.xx.xx"
- 您可以从任何用户执行此操作。
- 它应该是一个命令。(所以我可以将单行复制粘贴到其他终端,以防我没有在
.bash_profile
. xx.xx.xx.xx
需求是可配置的。
由于您无法为别名提供参数(至少我是这么认为的),因此我尝试使用以下方法解决它read
:
$ alias ssh-keyrm='read LAST_SSH_IP_ADDRESS_CLEARED && ssh-keygen -f "$HOME/.ssh/known_hosts" -R "$LAST_SSH_IP_ADDRESS_CLEARED"'
$ ssh-keyrm
xx.xx.xx.xx
关于如何进一步优化它的任何建议?
如果你想将参数传递给 Bash 中预定义的东西,你可以使用函数而不是别名来达到同样的效果:
这将像这样运行:
与别名一样,函数可以存储在 .bashrc、.bash_profile 中,或者在 shell 中定义为 inlne。
Bash 别名作为简单的扩展工作(别名只是被别名值替换),因此它们不能使用 $n引用单个参数。
但是,您可以提供参数,只要它们位于命令末尾即可。使用这样的别名:
你可以运行它
rmh 192.168.0.1
,虽然这个词rmh
会被扩展,但它后面的所有参数仍然会保留在同一个地方。我对使用相同 IP 的不同设备也有类似的问题,但采用了稍微不同的方法来解决它:首先防止主机密钥进入
known_hosts
。然后
sshn
在您想禁用主机密钥安全性时运行。ssh 告诉您它已将主机添加到已知主机,但实际上并没有自从写入到
/dev/null
. 您可以通过调整日志级别来抑制这种情况,但这可能会关闭其他有用的消息。我也有
StrictHostKeyChecking=no
这样它跳过真实性提示,但如果您希望查看密钥指纹,您可以省略该选项。防止主机密钥被保存的另一种解决方案
请注意,这将禁用使 ssh 安全的部分内容,即验证您连接的主机实际上是您认为的主机!
将部分添加到
~/.ssh/config