通过 2 跳 SSH 会话复制远程日志文件,无需输入密码

通过 2 跳 SSH 会话复制远程日志文件,无需输入密码

我希望无需输入密码即可通过网关服务器将日志文件从远程 PC 传输到本地 PC。网关服务器使用 acctA@gatewayServer。远程 PC 使用 acctB@remotePC。

我已经在网关和远程上设置了 SSH 私钥/公钥。

从我的本地 PC,我可以通过 2 跳直接通过 SSH 进入 remotePC,而无需输入 2 个帐户的密码,方法是: ssh acctA@gatewayServer -t ssh acctB@remotePC

但是当我将 SCP 与 ProxyCommand 结合使用时,它会要求我输入 acctB 的密码。为什么?

scp -Cp -o "ProxyCommand ssh -q acctA@gateway -W remotePC:22" acctB@remotePC:/opt/logpath/log1.tgz log01.tgz

提前向所有能提供建议的人表示感谢。

答案1

最简单的方法是在你的.ssh/配置文件:

  Host remotePC
  User          acctB
  HostName      remotePC
  ProxyCommand  ssh AcctA@gatewayServer nc %h %p 2> /dev/null

然后您可以使用它来连接或复制文件:

  ssh remotePC
  scp acctB@remotePC:/home/AcctB/somefile .

为了实现此功能,你需要 netcat (数控)命令安装在网关服务器上。

如果你真的坚持要一句话(但我永远记不住所有这些东西),那么你可以这样做:

ssh -o "ProxyCommand ssh acctA@gatewayServer nc -w 1 %h 22" acctB@remotePC

scp 也同样如此。

相关内容