在@Sarke 帮助后我找到了解决方案:
这是修复版本,原来的损坏版本对任何人都没有帮助。
关于为什么我需要能够从一个容器通过 SSH 连接到另一个容器,因为我需要对某些客户端提供高可用性,并且想要使用 DRBD 或 rsync 进行磁盘镜像,并希望通过 ssh 隧道进行操作。
xfce4-terminal -T LocalTerm
退出
在 LocalTerm:
lxc stop C1
lxc stop C2
lxc delete C1
lxc delete C2
lxc launch ubuntu:14.04 C1
lxc launch ubuntu:14.04 C2
lxc list --format csv
xfce4-terminal -T C1Term -e "bash -c 'lxc exec C1 -- /bin/bash; exec bash; exit 0;'"
xfce4-terminal -T C2Term -e "bash -c 'lxc exec C2 -- /bin/bash; exec bash; exit 0;'"
在 C1Term 和 C2Term 处:
apt-get update
apt-get upgrade
apt-get install netcat net-tools
apt-get install openssh-server openssh-client
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original
nano /etc/ssh/sshd_config
--------
Port 2222
PubkeyAuthentication yes
--------
在 LocalTerm:
lxc restart C1
lxc restart C2
在 C2Term:
lxc exec C2 -- /bin/bash; exec bash
在 C1Term:
lxc exec C1 -- /bin/bash; exec bash
ssh-keygen -t rsa
--------
Here using no password and all default options
--------
在 LocalTerm:
rm -rf /home/myUser/localFolder/*
lxc file pull --recursive C1/root/.ssh/id_rsa.pub /home/myUser/localFolder/
cat /home/myUser/localFolder/id_rsa.pub >> /home/myUser/localFolder/authorized_keys_tail
lxc file push --recursive /home/myUser/localFolder/authorized_keys_tail C2/root/.ssh/
lxc exec C2 -- sh -c "sudo cat /root/.ssh/authorized_keys_tail >> /root/.ssh/authorized_keys"
在 C1Term:
sudo ssh -i ~/.ssh/id_rsa.pem [email protected] -p2222
答案1
ssh-copy-id
用于将用户的公钥附加到远程文件中authorized_keys
。这是用于验证连接的文件。复制公钥文件不会产生任何效果。
对我来说,这似乎不像是 LXC/LXD 问题,而是 SSH 使用问题。
为了使用,ssh-copy-id
我们需要以某种方式进行验证,而且很可能我们的公钥尚未存在,因此需要密码。如果没有设置密码或密码可用,则需要手动完成。
尝试
lxc file pull --recursive C1/root/.ssh/id_rsa.pub /home/myUser/localFolder/
cat id_rsa.pub >> authorized_keys
lxc file push --recursive /home/myUser/localFolder/authorized_keys C2/root/.ssh/
但是为什么需要能够从一个容器通过 SSH 连接到另一个容器呢?