如何在通过 ssh 连接到远程机器时创建别名?

如何在通过 ssh 连接到远程机器时创建别名?

我经常连接到临时服务器。我希望能够在连接到这些服务器时设置一些常用的别名。我想也许我可以创建一个 bash 函数/别名,将目标机器的主机名作为参数,然后执行以下操作

  • 打开与该服务器的 ssh 会话
  • 将我想在该服务器上使用的别名文件复制到服务器上,source以便可以立即使用

这很容易做到吗?我可能可以解决这个问题,但由于搜索中没有找到答案,所以在这里问一下并给别人点分也没什么坏处,对吧?:)

答案1

复制别名文件的想法是正确的。棘手的一点是在当前上下文中加载它们。我发现的唯一方法是运行bash传入文件的新实例:

bash --rcfile uploaded_aliases_file

这应该有效:

function ssh.test {
  TMP_RC=server_aliases
  scp rc_file [email protected]:${TMP_RC}
  ssh [email protected] "bash --rcfile ${TMP_RC} && rm ${TMP_RC}"
}

或者使用 kubernetes pod 传递 pod 名称:

function kube.bash {
  TMP_RC=server_aliases
  kubectl cp server_rc $0:$TMP_RC
  kubectl exec -it $0 -- bash -c "bash --rcfile ${TMP_RC} && rm ${TMP_RC}"
}

请注意,我正在添加一个命令来删除别名,您可能想要也可能不想要,并且有点不稳定,因为它在您的 bash 会话之后运行,并且如果连接中断等则可能无法运行...

您也许可以让文件自行删除。

答案2

一切都已在我们面前完成。

有这样一个有趣的脚本,如 ssh 层。

实际上它是在同一个会话中将自身和其他文件传输到服务器,并不需要额外确认ssh-key的使用。

https://github.com/cdown/sshrc

相关内容