ssh命令行指定服务器主机密钥指纹

使用ssh命令行(OpenSSH),我可以指定服务器的主机密钥指纹吗?

这是winscp.com使用(例如) -hostkey="ssh-rsa 2048 AA:BB:CC...etc

我已经阅读了手册页几次,我很抱歉,如果我错过了那里显而易见的。

我不想只是自动接受主机密钥,我不想要求用户更新其known_hosts ,而是在命令行上以某种forms指定主机密钥。

OpenSSH中没有命令行选项来传递主机密钥指纹。

虽然可以使用临时文件(格式与known_hosts相同),并使用-o UserKnownHostsFile来使用该-o UserKnownHostsFile

 ssh -o "UserKnownHostsFile my_temp_known_host" host.example.com 

请参阅ssh (对于-o )和ssh_config (对于UserKnownHostsFile )手册页。


你也可以考虑使用StrictHostKeyChecking yes


正如Auto上的build议接受来自命令行的rsa密钥指纹 ,您可以编写一个小脚本来实现:

 #!/bin/bash TEMPFILE=$(mktemp) echo "$1" > $TEMPFILE ssh -o "UserKnownHostsFile $TEMPFILE" ${@:2} rm $TEMPFILE 

如果您调用脚本ssh_known_host ,则可以使用它,将密钥作为第一个parameter passing:

 ssh_known_host 'github.com ssh-dss AAAAB3NzaC1kc3MAAACBANGFW2P9xlGU3zWrymJgI/lKo//ZW2WfVtmbsUZJ5uyKArtlQOT2+WRhcg4979aFxgKdcsqAYW3/LS1T2km3jYW/vr4Uzn+dXWODVk5VlUiZ1HFOHf6s6ITcZvjvdbp6ZbpM+DuJT7Bw+h5Fx8Qt8I16oCZYmAPJRtu46o9C2zk1AAAAFQC4gdFGcSbp5Gr0Wd5Ay/jtcldMewAAAIATTgn4sY4Nem/FQE+XJlyUQptPWMem5fwOcWtSXiTKaaN0lkk2p2snz+EJvAGXGq9dTSWHyLJSM2W6ZdQDqWJ1k+cL8CARAqL+UMwF84CR0m3hj+wtVGD/J4G5kW2DBAf4/bqzP4469lT+dF2FRQ2L9JKXrCWcnhMtJUvua8dvnwAAAIB6C4nQfAA7x8oLta6tT+oCk2WQcydNsyugE8vLrHlogoWEicla6cWPk7oXSspbzUcfkjN3Qa6e74PhRkc7JdSdAlFzU3m7LMkXo1MHgkqNX8glxWNVqBSc0YRdbFdTkL0C6gtpklilhvuHQCdbgB3LBAikcRkDp+FCVkUgPC/7Rw==' [email protected]