如何始终通过 ssh/scp 跳转到新主机?

如何始终通过 ssh/scp 跳转到新主机?

tinc我有一个外部 VPS,它通过IP 地址与另一台服务器建立 VPN 连接10.0.0.2

当通过特定用户连接时,我想通过一个命令通过 ssh 和 scp 连接到我的其他服务器 - foo

我可以ssh通过将这个添加到我的 VPS 来完成此操作/etc/ssh/sshd_config

Match User foo
    ForceCommand ssh -t [email protected] -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no

不幸的是,当我尝试scpscp ~/Desktop/hello.txt foo@vps_ip:/)使用此配置时,我得到:

Pseudo-terminal will not be allocated because stdin is not a terminal.
Warning: Permanently added '10.0.0.2' (ECDSA) to the list of known hosts.
Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-70-generic x86_64)
mesg: ttyname failed: Inappropriate ioctl for device

也一样

答案1

您的 ForceCommand 需要运行一个脚本来动态确定正确的 ssh 命令。

  • "$SSH_ORIGINAL_COMMAND"如果变量本地非空,则添加为远程命令。这允许ssh firsthost "uname -a"(例如)之类的内容正确传递到第二台主机。

  • 添加-t 除非stdin/stdout 是终端。批量传输 (scp、sftp、rsync、git) 需要 8 位干净流,强制 tty 分配会损坏数据。

  • 首先考虑不要以这种方式堆叠 SSH – 最好使用端口转发(iptables DNAT)或客户端 JumpCommand。

相关内容