在 `~/.ssh/config` 中更改 scp 默认目录

在 `~/.ssh/config` 中更改 scp 默认目录

(openssh)命令scp接受相host:path/对于主机上的主目录的相对路径。我想更改默认目录的位置。

例如,我想创建一个伪主机的快捷方式,.ssh/config如下所示

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 可以吗?

答案1

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

答案2

解决此问题的快速方法是在远程服务器上您自己的主目录中创建指向您想要访问的目录的符号链接:

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

这样您就可以快速访问该文件夹,如下所示:

scp file foo:webapp1/

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

答案3

另一个选项当然是类似于下面的小脚本/函数(这里假设是 bash):

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

相关内容