更改'〜/ .ssh / config`中的scp默认目录

scp (openssh)命令接受相对path作为host:path/ ,它们与主机上的主目录相关。 我想改变默认目录的位置。

例如,我想在.ssh/config创build一个快捷方式的伪主机

 Host bar hostName foo ## this directive does not actually exist: DefaultDirectory /home/me/some/path/here 

所以我可以写

 scp some_file bar:baz 

代替

 scp some_file foo:some/path/here/baz 

这是可能的openssh?

“home”目录由/etc/passwd文件中定义的用户主目录定义。 我不相信任何opensshd参数将覆盖此行为。 您可以更改用户的主目录…但我不认为这是你要找的。

对此的快速解决scheme是在远程服务器上您自己的主目录中创build一个符号链接到您要访问的目录:

 ln -s /your/long/path/here/to/webapp1 ~/webapp1 

这将允许您快速访问文件夹,如下所示:

 scp file foo:webapp1/ 

并允许将来扩展(多个远程文件夹),并不会破坏其他程序。 我发现这对我的服务器是有帮助的,当我有几个网站运行在同一台服务器上,我需要推送文件给他们(我现在主要使用这个git)。

另一个选项当然是一个小脚本/函数(假设这里是bash):

 myscp() { scp ${1%%:*}${SCP_DIR:?/tmp}/${1#*:} }