因为要在两台服务器的容器上使用ucx实现GPU的RDMA,所以需要两个容器之间ssh免密登录
步骤如下(所有步骤均在容器内部进行)
切换成root用户
在容器内部安装openssh:# apt-get install openssh-client openssh-server
编辑ssh的配置文件,更改ssh的端口:# vim /etc/ssh/sshd_config
在最后一行加上Port 2233
为什么要有这步呢,主要是把容器内的ssh端口(改为2233)和容器外的ssh端口(默认是22)区分开,如果不改变容器内的ssh端口的话,之后ssh默认是连接到容器外部的。
重启ssh服务# service ssh restart
之后切换成非root用户(zcq)
$ ssh-keygen -t ed25519
-t ed25519
是为了让生成的公钥长度短一点,不加也行。authorized_keys
文件~/.ssh
目录,其中复制其中的id_ed25519.pub
文件里的公钥的内容:~/.ssh
目录中,创建authorized_keys
文件,将公钥的内容复制到其中。然后去另一台服务器的容器中,将其的~/.ssh/id_ed25519.pub
公钥的内容复制进当前容器的authorized_keys
文件中。并在另一台服务器上同样创建authorized_keys
文件,并复制公钥。~/.ssh/authorized_keys
文件,其中的内容相同,都分别是两台服务器的~/.ssh/id_ed25519.pub
~/.ssh
目录创建config文件,内容如下:Host r1d HostName 10.0.0.1 User zcq Port 2233 Host r4d HostName 10.0.0.4 User zcq Port 2233
解释一下:
Host r1d # r1d是自己取的名字 HostName 10.0.0.1 #当前服务器的ip地址 User zcq #当前容器的用户名 Port 2233 # 之前配置的 /etc/ssh/sshd_config 的 Port Host r4d # 另一台服务器的名字,可以任意取 HostName 10.0.0.4 #另一台服务器的ip User zcq # 另一台服务器的用户名 Port 2233 #同上
之后在r1d这个容器上,使用ssh r4d
就可以免密登录到r4d了(第一次登录按照提示输入个yes
,之后就不用了)
\ |^_^| /