![如何在通过 ssh 连接到远程机器时创建别名?](https://linux22.com/image/767423/%E5%A6%82%E4%BD%95%E5%9C%A8%E9%80%9A%E8%BF%87%20ssh%20%E8%BF%9E%E6%8E%A5%E5%88%B0%E8%BF%9C%E7%A8%8B%E6%9C%BA%E5%99%A8%E6%97%B6%E5%88%9B%E5%BB%BA%E5%88%AB%E5%90%8D%EF%BC%9F.png)
我经常连接到临时服务器。我希望能够在连接到这些服务器时设置一些常用的别名。我想也许我可以创建一个 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的使用。