我需要在只能在特定网络内通过 SSH 访问的远程机器上上传和编译内容。
例如我执行以下步骤:
me@mymachine$ ssh user@network_gateway
user@network_gateway$ ssh seconduser@targetmachine
seconduser@targetmachine$ #do stuff
有没有办法让我的本地机器知道隧道,而不必每次都经历连接网络网关的麻烦?
答案1
您可以配置您的.ssh/config
以自动为 提供隧道targetmachine
。但是,为了实现无密码工作,您需要在主机和网关中的代理转发中设置公钥身份验证。
设置它以便targetmachine
通过以下方式代理连接network_gateway
:
Host targetmachine
HostName targetmachine.company.com
ProxyCommand ssh network_gateway -W %h:%p
然后你可以发出:
$ ssh targetmachine
直接连接。手册页中有更多信息ssh_config(5)
。
答案2
SSH 将接受要在远程计算机上执行的命令。例如,要通过 server1 通过 SSH 进入 server2:
ssh alice@server1 "ssh bob@server2"
然后您将能够在 server2 的提示符中输入命令。
如果你想要更加花哨,你可以嵌套它们:
ssh alice@server1 "ssh bob@server2 \"cd myproject && git pull origin master && make all\""
答案3
你可以使用类似脚本ssh-链让您的生活更加轻松。
但不知道它是否支持 sftp 传输。