我可以在某种配置文件中使用这些别名吗?

我可以在某种配置文件中使用这些别名吗?

我有很多这样的别名,=之前的部分是ssh配置中的主机

alias sshConfigHost='ssh -t hostname docker exec -it containerName bash'

我可以将它们添加到某种配置文件中吗?主机名是在 ssh 配置中定义的,因此它在某种程度上被使用了两次,我是否可以有一个像%<whatever>这样的占位符,它将从 ssh 配置中获取主机名。

如果没有,那么我至少可以在 ssh 配置中包含容器名称,然后使用占位符将其拉入 cmd 中吗?

答案1

我假设您想使用没有任何尾随“参数”的别名(即在 shell 中您想调用 sole sshConfigHost,而不是类似的东西sshConfigHost -c "shell code here")。

如果是这样,您可以将所有内容放入您的~/.ssh/config

Host friendlyName
   RequestTTY yes
   Hostname hostname
   RemoteCommand docker exec -it containerName bash

(如果有的Host *话,请记住对于每个参数,将使用第一个获得的值.)

现在你只需要做:

ssh friendlyName

并且ssh会像你一样行事:

ssh -t hostname 'docker exec -it containerName bash'

Host …根据需要定义任意多个部分。他们中的一些人可能使用相同Hostname和不同的RemoteCommand,或者其他什么。重点是你构建丰富的配置,因此在 shell 中就足够了,ssh oneword并且配置将被填充一切对于你来说,取决于oneword

配置文件故意如此强大,它可以指定每个选项。看man 5 ssh_config。我对这个概念感到害怕(当我可以像使用任何其他工具一样在命令行中指定选项等时,为什么要费心一些“晦涩”的配置?),直到我发现它整洁且方便。这才是正确的使用方法ssh。一般来说,如果在调用时需要一次又一次重复某些内容ssh,请考虑将其放入配置文件中。

然后 shell 中就不需要附带别名了。整个配置都在你的~/.ssh/config.

相关内容