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


15

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

使用(例如)winscp.com可以做到这一点 -hostkey="ssh-rsa 2048 AA:BB:CC...etc

我已经读过几次手册页,如果我错过那里的明显内容,我深表歉意。

我不想只是自动接受一个主机密钥,也不想要求用户更新它们known_hosts,而是在命令行上以某种形式指定主机密钥。


-o UserKnownHostsFile可能与临时文件一起使用。
payo 2015年

Answers:


16

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

尽管您可以使用一个临时文件(格式与相同known_hosts),然后ssh使用来使用它-o UserKnownHostsFile

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

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


您也可以考虑使用StrictHostKeyChecking yes


如在“ 从命令行自动接受rsa密钥指纹”中建议的那样,您可以编写一个小脚本来实现以下目的:

#!/bin/bash

TEMPFILE=$(mktemp)
echo "$1" > $TEMPFILE

ssh -o "UserKnownHostsFile $TEMPFILE" ${@:2}

rm $TEMPFILE

如果调用脚本ssh_known_host,则可以使用它,并将键作为第一个参数传递:

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==' git@github.com

任何线索为什么-o UserKnownHostsFile=<(echo "hostname ssh-rsa ...")不起作用?
卡巴斯德(Kasperd),2015年

2
@kasperd可能是因为创建的fd <()只能读取一次,而ssh反复读取文件。
Martin Prikryl

感谢您使用StrictHostKeyChecking的回答和建议。此解决方案将为我工作。
payo 2015年

1
我忘记在编辑中提到脚本解决方案避免了中间人攻击
RDP 2016年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.