【昇腾】NPU Snt9B裸金属服务器多机免密互通解决方案

举报
modelarts-dev-server 发表于 2023/10/30 21:31:22 2023/10/30
【摘要】 1. 问题现象在进行多机ssh免密互通时,发现/etc/ssh目录缺少ssh_host_rsa_key、ssh_host_ecdsa_key、ssh_host_ed25519_key等文件,导致访问ssh的22端口失败。2. 解决方案2.1 生成相关ssh key1. 执行如下三条命令ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_...

1. 问题现象

在使用华为云Snt9B裸金属服务器多机多docker容器进行ssh免密互通时,发现免密互通失败。报错为:

error: Could not load host key: /etc/ssh/ssh_host_rsa_key
error: Could not load host key: /etc/ssh/ssh_host_dsa_key
error: Could not load host key: /etc/ssh/ssh_host_ecdsa_key

在容器的/etc/ssh目录只有如下图所示的文件。

2. 解决方案

该问题是由于docker容器sshd服务密钥缺失,sshd守护进程无法加载SSH主机密钥导致。在容器的/etc/ssh目录缺少ssh_host_rsa_key、ssh_host_ecdsa_key、ssh_host_ed25519_key等文件。

按照以下步骤执行,即可成功配置并启动sshd服务。

2.1 生成相关ssh key

1. 执行如下三条命令,生成sshd服务所需的主机密钥。

ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''
ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N ''

此时/etc/ssh目录下应该存在如下文件

2. 修改sshd_config文件

vim /etc/ssh/sshd_config
#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

将上面四行改为:

Port 22
#AddressFamily any
ListenAddress 0.0.0.0
ListenAddress ::

监听所有的ipv4和ipv6地址。

3. 重新启动ssh服务

/usr/sbin/sshd

2.2 免密互联

本文以两台华为云Snt9B裸金属服务器为例,实现两台机器之间互相免密SSH登录,它们的vpc ip分别为
172.16.0.67 server1
172.16.0.92 server2

2.2.1 客户端生成秘钥

若想上server1免密连接上server2,需要在server1上生成私钥和公钥,执行如下命令:

ssh-keygen

ssh-keygen默认使用RSA算法,长度为2048位,执行完后会在用户目录下的.ssh文件夹创建rsa密钥类型的一个公钥和一个私钥,如下图。

2.2.2 传输公钥

执行如下命令,将server1的公钥上传到server2的root用户下,会在server2的/root/.ssh目录下生成一个authorized_keys文件

ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.0.92

在server2执行

vim authorized_keys

可以看到server1的公钥已经写如在authorized_keys文件中,就可以实现server1免密SSH登录server2。

2.2.3 测试免密连接

server1已经可以免密ssh登录server2了。

按照同样的逻辑,将server2的公钥发给server1,即可实现server2免密ssh登录server1,从而实现免密互联。

3 FAQ

3.1 sshd启动时报错Loaded : error(Reason: No such file or directory)

该报错说明当前容器中未安装ssh服务,执行如下命令安装:

yum install sshd        // centos 系统
apt-get install sshd    // ubuntu系统

3.2 ssh互联时报错Bad owner or permissions on xxx(e.g. /root/.ssh/config) 

该报错是权限问题导致,要保证报错显示的路径从.ssh目录开始权限均为600

例如:Bad owner or permissions on /root/.ssh/config

需要执行

chmod 600 /root/.ssh
chmod 600 /root/.ssh/config

3.3 配置免密互通后,调用ssh仍需要输入密码

要保证调用ssh连接时的用户和.ssh目录以及.ssh/authorized_keys的用户名和用户组保持一致。

例如,如果用户是root,那么用户名和用户组都要为root。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。