D.M*_*ill 6 linux ssh public-key ssh-keys
与此类似的问题有很多答案,但我似乎无法找到一个明确的答案。他们要么至少获取一次公钥,要么完全忽略密钥,要么直接写入 known_hosts 文件(暗示没有散列)
我有服务器的指纹和/或公钥。我想要一个 shell 命令将它添加到客户端的known_hosts文件中。这必须使用任何配置(散列/无散列)
此外,该脚本将从该服务器执行 git pull 操作,因此我不知道此时提供端口信息是否相关。请告诉我是不是。
谢谢。如果这已经得到回答并且我以某种方式错过了它,请随时为我指出正确的方向。
PS - 额外信息:我询问端口的原因之一是因为我做了以下操作但没有成功(我知道这是从主机获取我宁愿不这样做的密钥):
ssh-keygen -R my.awesome.host # hostname
ssh-keygen -R 1.2.3.4 # IP
ssh-keygen -R my.awesome.host,1.2.3.4
ssh-keyscan -H my.awesome.host,1.2.3.4 >> ~/.ssh/known_hosts
ssh-keyscan -H 1.2.3.4 >> ~/.ssh/known_hosts
ssh-keyscan -H my.awesome.host >> ~/.ssh/known_hosts
Run Code Online (Sandbox Code Playgroud)
但是当我 git clone (通过 ssh)时,我遇到了一个响亮的:
The authenticity of host '[my.awesome.host]:7999 ([1.2.3.4]:7999)' can't be established.
RSA key fingerprint is fi:ger:pr:in:ti:nf:or:ma:ti:on
Are you sure you want to continue connecting (yes/no)?
Run Code Online (Sandbox Code Playgroud)
但ssh user@my.awesome.host没有提示我关于指纹。
有了公钥,您可以简单地将密钥写入文件known_hosts并可能重新散列,如果您需要:
HOSTNAME=my.awesome.host
PORT=7999
PUBKEY="ssh-rsa AAAAB3NzaC1yc2EAAAAD...E"
KNOWN_HOSTS="~/.ssh/known_hosts"
echo "[$HOSTNAME]:$PORT $PUBKEY" >> $KNOWN_HOSTS
# re-hash, if needed:
ssh -G -p $PORT $HOSTNAME | grep "hashknownhosts yes" && \
ssh-keygen -H -f $KNOWN_HOSTS
Run Code Online (Sandbox Code Playgroud)
-G的开关相当ssh新。如果它不起作用,您将必须确定是否以不同的方式对已知主机进行哈希处理(或无论条件如何都进行哈希处理)。
具有已散列主机的散列文件不会触及这些行。
我没有尝试上面的脚本,但你应该能够从中得到要点(并修复拼写错误,如果有的话)。
| 归档时间: |
|
| 查看次数: |
1915 次 |
| 最近记录: |