我需要在远程计算机上上传和编译东西,而这个远程计算机只能在通过SSH访问的特定networking中访问。
所以例如我执行以下步骤:
me@mymachine$ ssh user@network_gateway user@network_gateway$ ssh seconduser@targetmachine seconduser@targetmachine$ #do stuff
有没有办法使我的本地机器知道隧道,而不会经历每次连接到网关的麻烦?
您可以configuration.ssh/config为targetmachine自动提供隧道。 为此无密码工作,虽然你需要在网关中设置公钥authentication,在网关代理转发。
设置它,以便通过network_gateway代理连接到targetmachine :
Host targetmachine HostName targetmachine.company.com ProxyCommand ssh network_gateway -W %h:%p
然后你可以发出:
$ ssh targetmachine
直接连接。 有更多的信息在ssh_config(5) manpage中。
SSH将会在远程机器上执行一个命令。 例如,要通过server1连接到server2,请执行以下操作:
ssh alice@server1 "ssh bob@server2"
然后你将能够input命令到server2的提示符。
如果你想变得更加奇特,你可以把它们嵌套在一起:
ssh alice@server1 "ssh bob@server2 \"cd myproject && git pull origin master && make all\""
你可以使用像ssh-chain这样的脚本来让你的生活更轻松。
不知道它是否支持sftp传输。