我有很多这样的别名,=之前的部分是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
.