在一个连接中执行scp-then-ssh


0

在工作和在家中,我都经常做以下事情:

$ scp "SomeScriptIJustCreatedOrModified.sh" some-server:
$ ssh some-server ./SomeScriptIJustCreatedOrModified.sh arguments

有时也有这种变化:

$ scp "SomeScriptIJustCreatedOrModified.sh" some-server:/tmp
$ ssh some-server -t sudo -u other_user /tmp/SomeScriptIJustCreatedOrModified.sh arguments

事实是,服务器通常位于不同的国家,并且SSH握手通常至少需要花费几秒钟的时间,而这种明显的短暂等待很快就会变旧,并且会干扰一长串服务器。不仅如此,我之前因建立可疑的快速成功SSH连接而受到指责。

如何做到这一点?


在您的别名.bashrc
亚当

@Adam一个连接,而不是一个命令。
Ekevoo 2014年

2
考虑使用controlmaster,它会打开与服务器的一个连接,而在打开该连接时,以后的任何ssh或scp连接都将使用该连接,并且不需要您输入凭据。puppetlabs.com/blog/speed-up-ssh-by-reusing-connections
Adam

我的.ssh / config看起来像这样:pastebin.com/8SHV8g3k
Adam

为什么不只是保持登录远程服务器而不是每次都连接?
jjlin 2014年

Answers:


2

尝试调查controlmaster。它打开一个ssh连接,并允许将来的ssh和scp连接通过同一连接,因此无需再次提供密码或等待连接打开。

这是如何设置的示例controlmaster

编辑.ssh/config文件以包含以下行:

Host hostname                                                                                                          
    User username                                                                                                  
    HostName hostname                                                                                                        
    ControlMaster auto
    ControlPath ~/.ssh/%r@%h:%p

hostnameusername适当的信息被替换。


0

如果您在服务器上具有ssh访问权限,则始终可以使用ExpanDrive之类的sftp客户端将远程主目录安装在本地计算机上。然后,您可以只在文本编辑器中本地编写脚本,然后将其保存到本地安装的远程计算机上。

到那时,它将在服务器上,您所要做的就是将ssh插入并运行它。只要使sftp和ssh连接保持打开状态,您就可以整天保存和运行任意数量的脚本,并且只需为sftp和ssh连接一次即可。

请记住,通过此工作流程,每次保存时,您都将写入远程服务器,并且写入速度仅会达到操作系统和网络限制所允许的速度(即,它的速度将比本地写入速度慢)。


谢谢,但这仅是单服务器方案的好解决方案。
Ekevoo 2014年

您可以在Expandrive中同时连接到多个服务器。对于ssh,您可以使用终端中的屏幕或选项卡一次打开多个连接。
2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.