如何通过 SSH 进入 colima 实例

How to SSH into the colima instance

寻找通过 SSH 连接到 colima 所需的步骤,这太新了而且文档有点稀缺。我需要复制这些卷,运行 scp 看起来很理想。

快速回答

我发现最直接的方法是:

(tmpconfig=$(mktemp); limactl show-ssh --format config colima > $tmpconfig; ssh -F $tmpconfig lima-colima)

当我在做的时候,这是 scp:

(tmpconfig=$(mktemp); limactl show-ssh --format config colima > $tmpconfig; scp -F $tmpconfig lima-colima:/path/to/somewhere/ .)

我很想用文件描述符来写这个,不幸的是,当你在 -F 参数中传递文件描述符时,ssh 不喜欢它,例如:ssh -F <(limactl show-ssh --format config colima) lima-colima


使用root

如果您需要授权为 root,例如 ssh -F $tmpconfig root@lima-colima,您会发现它不会工作,您的用户将始终被使用,这里是更改它的步骤。

(
tmpconfig=$(mktemp);
# Need to remove the 'ControlPath' and 'User', and add 'ForwardAgent'
(limactl show-ssh --format config colima | grep -v "^  ControlPath\|  ^User"; echo "  ForwardAgent=yes") > $tmpconfig;
# Setup root account
ssh -F $tmpconfig $USER@lima-colima "sudo mkdir -p /root/.ssh/; sudo cp ~/.ssh/authorized_keys /root/.ssh/authorized_keys"
)

上面的命令稍微更改为:

(tmpconfig=$(mktemp); (limactl show-ssh --format config colima | grep -v "^  ControlPath\|  ^User"; echo "  ForwardAgent=yes") > $tmpconfig; ssh -F $tmpconfig root@lima-colima)

使用 ~/.ssh/config

如果您要经常 ssh-ing 进入 colima,您总是可以跳过所有的大惊小怪,只需将其添加到您的 ~/.ssh/config 中,然后调用它“通常”。

# run this ONLY ONCE!!!
limactl show-ssh --format config colima >> ~/.ssh/config

然后只需调用 ssh/scp “正常”:

ssh lima-colima
scp lima-colima:/path/blah/foo .

就个人而言,我不喜欢把我的 ~/.ssh/config 弄得乱七八糟,而是做最适合自己的事情。