使用SCP结合ProxyJump跨两跳下载文件时无法读取中间机私钥的问题求助
大家好,我最近碰到一个跨机器下载文件的难题,想请各位帮忙看看怎么解决。
我的场景是这样的:我需要先登录到一台远程机器(REMOTEMACHINE),然后从这台机器再连接到另一台隐藏机器(HIDDENMACHINE),才能访问上面的文件。平时手动操作的流程是这样的:
# 第一步:登录到远程机器,需要输入密码 ssh REMOTEMACHINE # 第二步:从远程机器登录到隐藏机器,这一步用远程机器上~/.ssh/目录下的私钥自动认证 ssh HIDDENMACHINE # 之后就能查看目标文件了 less my_file.log
现在我想直接把my_file.log下载到本地,不用手动跳转后再操作。查资料知道scp支持ProxyJump参数,就试了下面这个命令:
scp -oProxyJump=REMOTEMACHINE HIDDENMACHINE:my_file.log ./my_file.log
但执行后遇到了问题,输出内容如下:
someuser@REMOTEMACHINE's password: *******
The authenticity of host 'HIDDENMACHINE ()' can't be established.
ED25519 key fingerprint is SHA256:XXXXXX.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'HIDDENMACHINE' (ED25519) to the list of known hosts.
someuser@HIDDENMACHINE: Permission denied (publickey).
lost connection
看起来命令能成功通过第一跳(输入远程机器密码后没问题),但第二跳的时候没办法读取REMOTEMACHINE上~/.ssh/里的私钥,导致公钥认证失败,没法下载文件。
想请教下各位,有没有办法让scp在通过ProxyJump跳转的时候,使用中间机器(REMOTEMACHINE)上的私钥来完成第二跳的认证呢?
备注:内容来源于stack exchange,提问作者Tomáš Zato

