若您在制作文件系统时未通过修改系统启动脚本的方式打开SSH服务,系统启动后,您可参考本章节使用DSMI接口进行打开。
Device的SSH服务处于关闭状态可提升系统安全性。
如果需要打开SSH,请确保SSH登录密码的复杂度和机密性。如果SSH登录密码出现泄露,攻击者可侵入Device对系统进行篡改,并可能导致系统内部敏感信息泄漏、系统无法得到预期的运行结果或系统无法正常运行等安全事件。
用户可通过调用DSMI接口“dsmi_set_user_config”打开Device侧的SSH服务,下面给出调用此DSMI接口的完整示例。
touch dsmi_open_ssh.c
“dsmi_open_ssh.c”文件中代码示例如下:
#include <stdlib.h> #include <stdio.h> #include "dsmi_common_interface.h" // DSMI相关接口所在头文件,存储路径为Host侧的/usr/local/Ascend/driver/include int main() { int ret; int dev_list[64] = {0}; int dev_cnt = 0; const char config_name[20] = "ssh_status"; unsigned int buf_size = 1; unsigned char buf = 1; // 0: disable 1:enable ret = dsmi_get_device_count(&dev_cnt); if (ret != 0) { printf("[%s] get dev_cnt test_fail value = %d \n", __func__, ret); return -1; } if (dev_cnt <= 0) { printf("[%s] get dev_cnt test_fail value = -1 , dev_cnt:%d \n", __func__, dev_cnt); return -1; } printf("[%s] dev_cnt:%d \n", __func__, dev_cnt); ret = dsmi_list_device(dev_list, dev_cnt); if (ret != 0) { printf("[%s] list device test_fail value = %d \n", __func__, ret); return -1; } for (int i = 0; i < dev_cnt; i++) { ret = dsmi_set_user_config(dev_list[i], config_name, buf_size, &buf); if (ret != 0) { printf("[%s, %d] dev_id:%d test_fail, value = -1 ret:%d \n", __func__, __LINE__, dev_list[i], ret); return -1; } printf("[%s, %d] dev_id:%d set %s:0x%x, buf_size:%d\n", __func__, __LINE__, dev_list[i], config_name, buf, buf_size); } return 0; }
gcc dsmi_open_ssh.c /usr/local/Ascend/driver/lib64/driver/libdrvdsmi_host.so -L. -I/usr/local/Ascend/driver/include -std=c99 -o open_ssh_tool
/usr/local/Ascend表示Driver组件的默认安装路径,请根据实际情况替换。
编译完成后,会生成可执行文件“open_ssh_tool”。
./open_ssh_tool
通过DSMI接口开启Device的SSH服务后,需要重启才能生效,请在Host侧执行如下命令进行重启操作。
reboot
cat /sys/fs/cgroup/memory/sshdmemory/cgroup.procs |xargs -n1 >>/sys/fs/cgroup/memory/cgroup.procs;rmdir /sys/fs/cgroup/memory/sshdmemory/
需要注意,每次Host重启后,都会恢复默认50MB的SSH服务内存限额。